尽管语句变为假,但是无限循环

时间:2013-10-04 15:18:46

标签: java while-loop

这段代码给了我无限循环,虽然sum变为等于7并变为等于(point)

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

但如果我这样做:

while(sum!=point) 

或者

while(sum!=7)

它运行正常没有任何问题

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:5)

你的逻辑略有缺陷。你的陈述是说虽然总和不等于点总和不等于7.它总是不等于其中一个,除非它们是相同的。

我认为你想使用&&

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

&&一旦sum等于7或指向它将退出循环。

答案 2 :(得分:1)

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

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

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

另外还有一个注意事项 - 你确定要加总!= 7?或者总和< 7如果总和大于7,你想要什么?

答案 3 :(得分:1)

以下是

以下内容

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

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

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

让我们想象你总和得到7分

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