这段代码给了我无限循环,虽然sum变为等于7并变为等于(point)
while ( sum!=point || sum!=7)
{
rollDices();
System.out.println("rolling dices .. sum="+sum);
} //end while
但如果我这样做:
while(sum!=point)
或者
while(sum!=7)
它运行正常没有任何问题
答案 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