Java虽然不是0或1

时间:2012-02-02 08:29:52

标签: java do-while

确定。所以我是Java的初学者。但是为什么这个循环永远不会结束,即使我输入0或1。

do {
   //Ask user to enter 1 or 0           
   System.out.print("Enter 1 or 0: ");
   upOrDown = keyboard.nextInt();

} while(upOrDown != 0 || upOrDown != 1); 
//Here the loop should exit if user entered 1 or 0, but it does not.

所以,我在这里错过了什么,可能非常明显,我很抱歉:(

12 个答案:

答案 0 :(得分:9)

您需要执行&&

您说“如果数字不是0或不是1,则重试。”然而,这总是正确的,因为它不能同时为0和1。

所以,这就是你想要的:

do {
   //Ask user to enter 1 or 0           
   System.out.print("Enter 1 or 0: ");
   upOrDown = keyboard.nextInt();
} while(upOrDown != 0 && upOrDown != 1); 

答案 1 :(得分:5)

因为每个数字都不是1或者不是0.不是吗? ))2不是1,1不是0而0不是1
如果你想在upOrDown为0或1时结束循环,你应该使用&&
while(upOrDown != 0 && upOrDown != 1);

答案 2 :(得分:4)

你基本上是说“直到它不是0或不是1才这样做。”这总是 true ,因为变量不能同时有两个值时间。

你应该这样说: “执行此操作直到我的值不为0而不是1”所以:

while(upOrDown != 0 && upOrDown != 1)

会做你想做的事。

答案 3 :(得分:4)

与Java无关,只是基本逻辑。 upOrDown != 0 || upOrDown != 1 总是为真,因为upOrDown不能同时为0和1 - 它始终是!= 0或!= 1。你可能想要upOrDown != 0 && upOrDown != 1

答案 4 :(得分:4)

upOrDown != 0 || upOrDown != 1

如果该数字与true不同或与0不同,则评估为1

它会是什么。

始终

答案 5 :(得分:4)

您的情况有问题,请将其更改为upOrDown == 0 || upOrDown == 1upOrDown != 0 && upOrDown != 1

答案 6 :(得分:4)

以下内容:

upOrDown != 0 || upOrDown != 1

相当于:

!(upOrDown == 0 && upOrDown == 1)

upOrDown10都将永远不会是真的,即永远是假的,因此,它的否定将永远是真的,因此你会得到无限的环

这是布尔代数(和集合论)的一个非常着名的结果,称为DeMorgan定律[http://en.wikipedia.org/wiki/De_Morgan%27s_laws]。你应该做的是:

!(upOrDown == 0 || upOrDown == 1)

答案 7 :(得分:3)

while(upOrDown != 0 && upOrDown != 1);

如果upOrDown不是0 AND 而不是1

,您想退出循环

答案 8 :(得分:3)

你有条件。如果其中一个条件成立,它将继续。 因此,如果输入0,则条件!= 1为真。 看看我的意思?

答案 9 :(得分:3)

 while(upOrDown != 0 || upOrDown != 1); 

由于upOrDown不能同时为0和1,因此该循环永远不会终止。

答案 10 :(得分:3)

这样做,

while(upOrDown != 0 && upOrDown != 1);

你是Java的初学者,请阅读本文。

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html

http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.23

答案 11 :(得分:2)

你的情况总是正确的。这就是为什么while循环永远不会结束。

您可能想要更改为upOrDown != 0 && upOrDown != 1

learn more about while loop