用Java检查输入

时间:2016-10-26 03:36:41

标签: java string input compare

首先让我先谈谈我是Java的新手,我不是专业的程序员,但我在VBA中写了几个宏。

我试图帮助我的儿子完成他的高中Java任务。在赋值中,存在用户具有Y或N输入的点。我无法弄清楚为什么这段代码无效。

            // Wait for user to press Y or N
        do{
            playAgain = input.next();
        } while (!playAgain.equalsIgnoreCase("n") || (!playAgain.equalsIgnoreCase("y"));

如果我只检查一个条件,它就有效。

2 个答案:

答案 0 :(得分:1)

只要输入不等于n/N y/Y,您的逻辑就会继续循环。对于是和否输入,实际上所有输入都是如此。如果没有输入,则第一个条件将失败,但第二个条件将为真,反之亦然。

要解决此问题,您应&&将两个条件放在一起:

 do {
     playAgain = input.next();
} while (!playAgain.equalsIgnoreCase("n") && (!playAgain.equalsIgnoreCase("y"));

答案 1 :(得分:1)

||是指OR。所以,A ||如果A为真或B为真,则B为真。任何Or条件都是这样的:如果第一部分为真,则不评估第二条件。如果first为假,则评估第二个。如果其中任何一个为真,则结果为真。

在你的do while循环中:!playAgain.equalsIgnoreCase(" n")如果" y"等于你的输入,反之亦然。无论哪种方式,任何一个条件在while循环条件中总是为真,所以循环将永远存在。在上面给出的答案中提到了解决方案。 (使用&&而不是||)