0

This code give me infinite loop although sum become equals to 7 and become equals to (point)

while ( sum!=point || sum!=7)
{
    rollDices();
    System.out.println("rolling dices .. sum="+sum);
} //end while

but if I do this:

while(sum!=point) 

or this

while(sum!=7)

it works fine without any problem

4

4 回答 4

6

如果你陷入困境并且无法弄清楚为什么你||&&没有做你想做的事情,请制定一个“真相表”。

对于||OR运算符:

true || false  //returns true
true || true   //returns true
false || true  //returns true
false || false //returns false

而对于&&AND运算符:

true && true   //returns true
true && false  //returns false
false && true  //returns false
false && false //returns false
于 2013-10-04T15:24:25.863 回答
5

你的逻辑有点瑕疵。您的陈述是说 sum 不等于 pointsum 不等于 7。除非它们相同,否则它将始终不等于其中之一。

我想你想使用&&

while(sum!=point && sum!=7){
    rollDices();
    System.out.println("rolling dices .. sum="+sum);
}

一旦&&总和等于 7 或点,它将退出循环。

于 2013-10-04T15:22:47.953 回答
1

我假设你想要 && 而不是 ||。这使得当 sum 等于 7 时,它将退出循环。

while( sum!=point && sum!=7){
    rollDices();
    System.out.println("rolling dices .. sum="+sum);
}//end while

所以它会留在循环中的唯一一次是当 sum 不等于 point 并且 sum 不等于 7 时。

还有一个附注 - 你确定你想要 sum != 7 吗?或者 sum < 7 是你想要的,以防总和大于 7?

于 2013-10-04T15:20:24.183 回答
1

发生在你身上的是以下

sum != point || sum!=7如果 point != 7 ,条件总是返回 true。

所以想想点= 12,你得到总和6。

6 != 12 -> true
6 != 7 -> true
true || true -> true

让我们想象一下你得到 7 的总和

7 != 12 -> true
7 != 7 -> false
true || false -> true
于 2013-10-04T15:24:45.907 回答