大家好我只需要快速解决如何对此问题进行验证的问题。不幸的是,我正在使用的这本书似乎并没有在尝试该程序后提供解决方案。这是问题所在。
“写一个输入验证程序,要求用户输入'Y','y''N'或'n'”
请记住,必须使用while循环才能完成任何帮助。
while(answer != "y" || answer!= "n" )
{
System.out.println("Please use a Y or N");
answer = keyboard.nextLine();
}
这是我当前的循环,但即使我在其中输入y或n,它似乎也不起作用。
我不断得到的当前输出是“请使用Y或N”,无论我输入正确的字母
答案 0 :(得分:1)
这几乎需要一个do-while循环:
do {
answer = keyboard.nextLine();
System.out.println("Please use a Y or N");
} while(!answer.equals("y") && !answer.equals("n"))
除了一个问题,无论如何都会显示警告。使用while,有两个选项:
answer = keyboard.nextLine();
while(!answer.equals("y") && !answer.equals("n")) {
System.out.println("Please use a Y or N");
answer = keyboard.nextLine();
}
或者,“无限循环与休息”的方法,可以节省你的两面性,但引入了“goto”:
while(true) {
answer = keyboard.nextLine();
if (answer.equals("y") || answer.equals("n")) {
break;
}
System.out.println("Please use a Y or N");
}
使用==
进行比较是一场灾难 - 永远不要将其与String
一起使用,始终使用equals
。否则,您将比较参考而不是值。
我几乎忘记了大写字母:您可以将equals
替换为equalsIgnoreCase
,如评论中所述。但是,如果因为愚蠢的要求而无法使用,那么只需与"Y"
和"N"
进行比较。