I'm writing this program where users can enter their name, identity card number, and desired membership level to sign up (Options available are only Gold, Platinum, Diamond). The program will then save the name, identity card number, and membership level in separate variables respectively. The format for the identity card number is set as YYMMDDPB###G, where the first 6 digits, YYMMDD indicates the date of birth (year-month-day), PB represents the place of birth, and the last digit G represents the gender (odd numbers represent male and even numbers represent female). I also need to allow the user to repeat the process for any invalid input.
For membership level, I want to allow only the letters G, P and, D for input, and other inputs will be considered invalid, prints an error statement, and brings back to the membership level input for the user to re-enter again. How do I do it?
public static void main(String[] args) {
Scanner input = new Scanner (System.in);
String prompt;
do
{
Scanner sc = new Scanner(System.in);
// Part 1 - Receiving input
// Name
System.out.println("Please enter your name: "); // Member enters name here
String name = sc.nextLine();
// Identity Card Number
System.out.println("Please enter your IC number (without the dash): "); // Member enters identity card number here
String identity_card_number = sc.nextLine();
// Membership Level
System.out.println("Please enter the membership level you would like to sign up. Enter G for Gold, P for Platinum, D for Diamond. (Enter only G, P, or D.)"); // Member enters desired membership level to sign up
String membership_level = sc.nextLine();
String memLvl = "default";
if (membership_level.equals("G")){
memLvl = ("Gold");
}
else if (membership_level.equals("P")){
memLvl = ("Platinum");
}
else if (membership_level.equals("D")){
memLvl = ("Diamond");
}
else {
memLvl = ("UNINDENTIFIED: Please re-enter the correct input for desired membership level");
}
CodePudding user response:
One of the option is to run the Membership Level in loop till it's not correct. Basically what sittsering has said. Sample code is given below.
boolean isMemLvlInalid = false;
String memLvl = "default";
do{
isMemLvlInalid = false;
System.out.println("Please enter the membership level you would like to sign up. Enter G for Gold, P for Platinum, D for Diamond. (Enter only G, P, or D.)"); // Member enters desired membership level to sign up
String membership_level = sc.nextLine();
if (membership_level.equals("G")) {
memLvl = ("Gold");
} else if (membership_level.equals("P")) {
memLvl = ("Platinum");
} else if (membership_level.equals("D")) {
memLvl = ("Diamond");
} else {
memLvl = ("UNINDENTIFIED: Please re-enter the correct input for desired membership level");
isMemLvlInalid = true;
System.out.println(memLvl);
}
}
while(isMemLvlInalid);