我今天才开始学习Java,并决定进行多项选择测验。我遇到的问题是,即使用户输入是正确的选择之一“ a”或“ b”之一,它也会陷入循环中。这是我的代码:
Scanner input = new Scanner(System.in);
String answer = input.nextLine();
while(!answer.equals("a") || !answer.equals("b")) {
System.out.println("Please enter one of the correct choices");
answer = input.nextLine();
}
有人可以让我知道我在做什么错吗?
谢谢
答案 0 :(得分:0)
问题在于||运算符,如果答案是A而不是B,反之,如果答案是B而不是A
答案 1 :(得分:0)
错误是在while循环条件下使用OR operator ("||")
。这些条件成立时,您的循环将继续执行。由于您要检查用户输入是否不同于“ a” 或与“ b”不同,因此该条件将始终为真,因为在输入处不能为“ a”和“ b”同时。
在这种情况下,您应该使用AND operator ("&&")
。见下文:
while(!answer.equals("a") && !answer.equals("b")) {
如果输入同时不同于“ a”且不同于“ b”,则此方法将返回true(并因此继续执行循环)。
编辑:
Alerra还提出了一种非常有趣的方法来实现上述效果。参见下文:
while(!(answer.equals("a") || !answer.equals("b"))) {
答案 2 :(得分:0)
while(!(answer.equals("a") || !answer.equals("b")))
您可以使用OR
的真值表来思考这个问题:
True True = True
True False = True
False True = True
False False = False
因此,如果用户未在回答A
和B
,则希望保持while循环运行,对False
求反,以便循环继续进行。如果用户回答A
和B
中的任何一个,将打破循环!
反或真值表:
True True = False
True False = False
False True = False
False False = True