虽然循环没有突破

时间:2013-01-26 22:49:51

标签: java algorithm loops

Scanner input = new Scanner(System.in);
selection = input.nextInt();
while (selection != 1 || selection != 2 || selection != 3 || selection != 4){
    System.out.println("*");
    selection = input.nextInt(); 
}

上面的代码只是进入一个循环,无论我输入它只是重复自己。我可能在某个地方犯了一个愚蠢的错误,但我可能看不到它可能是因为睡眠不足。欢迎任何帮助,谢谢。

所有或标志已更改为&&迹象,但它仍然循环?

3 个答案:

答案 0 :(得分:4)

替换

while (selection != 1 || selection != 2 || selection != 3 || selection != 4)

通过

while (selection != 1 && selection != 2 && selection != 3 && selection != 4)

选择!= 1 ||选择!= 2 is alwaysbecause选择`不能不是1而不是2.

答案 1 :(得分:1)

你的情况总是如此。对于您选择的任何数字,它总是不是1 而不是2. 1 等于1,但它不等于2,所以条件为真,同样2是不等于1所以条件是真的。其他每个数字都不等于1 2,因此条件仍然正确。

答案 2 :(得分:1)

除非表达式为false,否则

while将执行该块。 selection != 1 || selection != 2永远是真的。

我认为您希望将!=更改为==或更好

while (0 < selection && selection <= 4)