退出Java程序

问题描述 投票:0回答:2

我有一个用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);
}
java
2个回答
1
投票

由于您在输入字符串上使用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); 
}

1
投票

你的逻辑在这里有点逆转。

当你进入退出 - 第一个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

© www.soinside.com 2019 - 2024. All rights reserved.