为什么这个while循环没有终止?比较整数

时间:2016-03-16 17:16:50

标签: java while-loop

我正在尝试创建一种菜单。如果菜单中没有选项被选中,那么它应该继续重复选项。然而,这个while循环并没有终止,我不确定为什么。

我怀疑它与我如何比较我的注意事项有关。

Scanner s = new Scanner(System.in);
int inp = s.nextInt();

while (inp != 1 || inp != 2 || inp != 3 || inp != 4) {
    System.out.println("Not one of the options");
    System.out.println("Please choose an option:");
    System.out.println("\t1) Edit Property");
    System.out.println("\t2) View More info on Property");
    System.out.println("\t3) Remove Property");
    System.out.println("\t4) Return");

    s = new Scanner(System.in);
    inp = s.nextInt();
}

5 个答案:

答案 0 :(得分:4)

inp != 1 || inp != 2

这种情况总是如此:

  • 如果inp为42,则第一个操作数为true,第二个操作数为true,因此结果为true
  • 如果inp为1,则第一个操作数为false,第二个操作数为true,因此结果为true
  • 如果inp为2,则第一个操作数为true,第二个操作数为false,因此结果为true

您需要&&,而不是||

或者您也可以使用

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

或更简单:

while (inp < 1 || inp > 4)

答案 1 :(得分:3)

尝试将||替换为&&,如下所示:

  while(inp != 1 && inp != 2 && inp != 3 && inp != 4 ){

因为||的第一个条件始终是真的。

答案 2 :(得分:0)

你需要使用&amp;&amp;检查。无论什么输入,4或语句中的至少3个都是真的,因此循环将再次循环

答案 3 :(得分:0)

除了使用&&的其他答案之外,您可以删除否定因为您要检查“而不是任何这些选项”,即“ somethingElse)“

while (!(inp == 1 || inp == 2 || inp == 3 || inp == 4))) {

}

答案 4 :(得分:0)

你的病情错误,

这个:

while (inp != 1 || inp != 2 || inp != 3 || inp != 4) {

必须替换为

while (inp != 1 && inp != 2 && inp != 3 && inp != 4) {