我有一个用Java编写Health Analyzer Application程序的任务。这是第一步:
用户必须为性别输入Man(大写或更低)或Woman(大写或更低),或退出(大写或更低)以退出程序。如果用户为性别输入了无法识别的单词(不是男人,女人或退出),则程序会显示“性别选择错误! “,然后退出。
这就是我一直在努力的方面。我唯一缺少的是它将“退出”视为“错误的性别选择”,当它应该说“感谢您使用此应用程序”时
System.out.println("------------------------------------------------------------\n" +
" Welcome to Health Analyzer\n" +
"------------------------------------------------------------");
// SELECTING GENDER
Scanner scan = new Scanner(System.in);
System.out.println("\t Select Gender\n" +
"\t Enter \"Man\" to calclate average calorie requirements for man\n" +
"\t Enter \"Woman\" to calclate average calorie requirements for Woman\n" +
"\t Enter \"Exit\" for Exiting the Program\n" +
"Enter the Choice: ");
String gender;
gender = scan.nextLine().toLowerCase();
String man = "Man";
String woman = "Woman";
String exit = "Exit";
if (! (gender.equals(man)) || (gender.equals(woman))) {
System.out.println("\t Wrong Selection of gender!");
System.exit(0); }
else if (gender.equals(exit)) {
System.out.println("\t\t *** Thank you for using this Application ***");
System.exit(0);
}
由于您在输入字符串上使用toLowerCase转换为小写。您应该仅将字符串与小写进行比较。
gender = scan.nextLine().toLowerCase();
String man = "man";
String woman = "woman";
String exit = "exit";
否则,您可以使用equalsIgnoreCase来忽略区分大小写。
if (gender.equals(exit)) {
System.out.println("\t\t *** Thank you for using this Application ***");
System.exit(0);
}
else if (! (gender.equals(man) || gender.equals(woman)) ) {
System.out.println("\t Wrong Selection of gender!");
System.exit(0);
}
你的逻辑在这里有点逆转。
当你进入退出 - 第一个if(
if (! (gender.equals(man)) || (gender.equals(woman))) {
)将评价为真,因为它不是女人也不是男人。
你应该用truthy评估来做。
if (man.equals(gender) || woman.equals(gender)) {
doSomeStuffHere
}
else if (exit.equals(gender)) {
exitProgramHere
}
else {
printWrongGenderHere
}
而不是使用equals,使用equalsIgnoreCase