用户输入陷入循环

时间:2018-09-09 00:03:35

标签: java java.util.scanner

我今天才开始学习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();
    } 

有人可以让我知道我在做什么错吗?

谢谢

3 个答案:

答案 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

因此,如果用户未在回答AB,则希望保持while循环运行,对False求反,以便循环继续进行。如果用户回答AB中的任何一个,将打破循环!

反或真值表:

True True = False
True False = False
False True = False
False False = True
相关问题