【问题标题】:Checking an input in Java [duplicate]检查Java中的输入[重复]
【发布时间】:2016-10-26 03:36:41
【问题描述】:
首先让我先说我是 Java 新手,我不是专业程序员,但我已经用 VBA 编写了几个宏。
我正在努力帮助我儿子完成高中 Java 作业。在分配中有一个点,用户有一个 Y 或 N 输入。我不知道为什么这段代码不起作用。
// Wait for user to press Y or N
do{
playAgain = input.next();
} while (!playAgain.equalsIgnoreCase("n") || (!playAgain.equalsIgnoreCase("y"));
如果我只检查一个条件,它就可以工作。
【问题讨论】:
标签:
java
string
input
compare
【解决方案1】:
只要输入不等于n/N 或 y/Y,您的逻辑就会继续循环。这对于 yes 和 no 输入总是正确的,实际上 all 输入。如果输入 no,第一个条件将失败,但第二个条件为真,反之亦然。
要解决这个问题,您应该&& 将两个条件一起使用:
do {
playAgain = input.next();
} while (!playAgain.equalsIgnoreCase("n") && (!playAgain.equalsIgnoreCase("y"));
【解决方案2】:
||表示或。所以,A ||如果 A 为真或 B 为真,则 B 为真。任何或条件的工作方式如下:如果第一部分为真,则不评估第二个条件。如果 first 为 false,则计算 second。如果其中一个为真,则结果为真。
在您的 do while 循环中:如果“y”等于您的输入,则 !playAgain.equalsIgnoreCase("n") 将为真,反之亦然。无论哪种方式,任何一个条件在 while 循环条件中都将始终为真,因此循环将永远进行。上面给出的答案中提到了解决方案。 (使用 && 代替 ||)