由于某种原因,哨兵值无法按预期工作
public static int play() {
String input;int result;
do {
input = JOptionPane.showInputDialog("Do you want to play-Enter 1 if yes , 0 if no");
result = Integer.parseInt(input);
} while (result != 1 || result != 0);
return result;
}
上面的代码永远不会有效但如果我将条件从while (result != 1 || result != 0);
更改为while (result < 0 || result > 1);
为什么会这样,我如何在java的do...while
循环中做不同的工作?
谢谢
答案 0 :(得分:8)
使用:
while (result != 1 && result != 0) {...}
如果result
不是0
或1
在您的示例中,while
循环中的布尔语句将始终等于true
,因为结果只能等于1个值:
while (result != 0 || result != 1)
如果result
为1
,则它不等于0
,如果是0
,那么它不能是1
,所以它总是true
答案 1 :(得分:1)
while (result != 1 || result != 0)
这个条件意味着它总是循环,即使“1”或“0”作为回应:
如果用户输入0应该有效,则它将满足result != 1
并返回true
。
如果用户输入1应该有效,则它将满足result != 0
并返回true
。
您需要使用while (result != 1 && result != 0)
。
仅当答案不等于1且不等于0时才会循环。