具有两个值的Sentinel-control循环的Java while语句将不会终止

时间:2013-08-16 23:58:57

标签: java while-loop logic sentinel validity.js

这里我们试图检查已输入的数据的有效性,但我无法弄清楚问题可能是什么。我想检查“数字”是“1”还是“2”,如果没有重复提示,直到输入正确的数据。问题是一旦输入了正确的数据,它应该突破循环,但我发现它保持在循环中。我发布了代码&可以发布更多内容以便理解。

while (( number != 1) || (number != 2)) // Check validity
{
   System.out.println ( "Number must be a 1 or a 2"); 
   System.out.print( "Enter number: " );
   number = input.nextInt();              
}  // end of while check validity

我已经分别测试了语句while(number != 1)while(number !=2),它似乎工作正常,所以看起来问题是在语句while(( number !=1) || (number != 2))的逻辑中,所以我想也许我使用了错误的“或”语句,所以尝试了其他或操作数,这没有用,而且(我记不起我已经做了很多转换)我认为它错了或者没有'无论是逻辑上还是没有区别 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:7)

你的逻辑错误。 number不等于1或者它不等于2,这总是正确的。这就是你的while循环不会终止的原因。

您需要逻辑和运算符&&

while (( number != 1) && (number != 2))

因此,当number不是1number不是2时,循环将继续。