确定。所以我是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.
所以,我在这里错过了什么,可能非常明显,我很抱歉:(
答案 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 == 1
或upOrDown != 0 && upOrDown != 1
答案 6 :(得分:4)
以下内容:
upOrDown != 0 || upOrDown != 1
相当于:
!(upOrDown == 0 && upOrDown == 1)
upOrDown
将1
和0
都将永远不会是真的,即永远是假的,因此,它的否定将永远是真的,因此你会得到无限的环
这是布尔代数(和集合论)的一个非常着名的结果,称为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)