首先让我先谈谈我是Java的新手,我不是专业的程序员,但我在VBA中写了几个宏。
我试图帮助我的儿子完成他的高中Java任务。在赋值中,存在用户具有Y或N输入的点。我无法弄清楚为什么这段代码无效。
// Wait for user to press Y or N
do{
playAgain = input.next();
} while (!playAgain.equalsIgnoreCase("n") || (!playAgain.equalsIgnoreCase("y"));
如果我只检查一个条件,它就有效。
答案 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循环条件中总是为真,所以循环将永远存在。在上面给出的答案中提到了解决方案。 (使用&&而不是||)