java用户输入陷入循环
我今天刚开始学习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();
}
有人能告诉我我做错了什么吗
谢谢
# 1 楼答案
错误在于在while循环条件中使用
OR operator ("||")
。当这些条件为真时,循环将继续执行。由于您正在检查用户输入是否不同于“a”或“b”,因此该条件将始终为真,因为输入不能同时为“a”和“b”在这种情况下,应该使用
AND operator ("&&")
。见下文:如果输入同时不同于“a”和“b”,则返回true(从而继续执行循环)
编辑:
Alerra还提出了一种非常有趣的方法来实现上述目标。见下文:
# 2 楼答案
问题在于| |运算符,如果答案是A,则答案不是B,反之,如果答案是B,则答案不是A
# 3 楼答案
你可以使用
OR
的真值表来思考这个问题:因此,如果用户没有回答
A
和B
,您希望保持while循环运行,反转False
,以便循环继续。如果用户回答A
和B
中的任何一个,它将打破循环逆表或真值表: