Java - 使用int值循环条件语句失败

时间:2016-05-11 03:31:46

标签: java loops while-loop int

在Java编程中,我试图通过while循环放置一个int,并且我希望int小于9且大于零。但是当程序运行时,它只记录第一个条件(在这种情况下," num< 1")并忽略第二个条件(" num> 9")。

int num = console.nextInt();
while(num<1 && num>9){
    System.out.println("You must type a number less than nine and greater than zero to continue.");
    num = console.nextInt();
}

我翻了个订单,同样的问题出现了。为什么程序在while循环中注册第一个条件而不是第二个条件?我从来没有遇到过Strings这个问题,在这种情况下,这些格式是不同的?

5 个答案:

答案 0 :(得分:1)


根据我的理解,在大多数编程语言中都是一样的。
原因是a && b表示如果a为真并且b为真,那么只有在所有条件下才会变为真。所以如果&#39; a&#39;事实并非如此,没有必要检查b是否属实。
这就是为什么大多数编程语言都是这样实现的 无论数据类型如何,所有人都是如此。

答案 1 :(得分:1)

首先AND表示条件都应该为真。由于您已将&&条件放在while中,因此编译器无法获得小于1且小于9的num

对于AND,它总是检查第一个条件;如果它不满意则会变得懒惰,并且不会检查后续条件。

解决方案:

while(num<1 || num>9)

答案 2 :(得分:1)

在您的代码段中,表达式为:

(num < 1 && num > 9)

总是评估为假,一个数字不能同时小于一,也不能大于九。

我想你想要:

(num > 0 && num < 9)

编辑:此外,Helios是正确的。表达式从左到右进行计算,如果不满足第一个条件(左边),则布尔值为AND(&amp;&amp;),第二个条件(右边)永远不会被计算,因为组合表达式可以从来没有评价任何东西,只有虚假。

答案 3 :(得分:0)

作为您的条件,给定数字必须小于1 “和”大于9,这将永远不会成真。

对于您的方案,您需要使用“或”条件

while(num<1 || num>9)

答案 4 :(得分:0)

当您撰写num<1 && num>9时,这意味着您正在尝试评估该数字是否小于1 AND 大于9 ,但您是否可以真正输入此类数据?号码?

根据您的要求,您应检查提供的号码是否小于1 大于9 。所以应该是这样的:

while(num<1 || num>9){

逻辑运算符&&||在评估条件时也使用快捷方法。在cond1 && con2中,如果第一个条件cond1false,则评估第二个条件即cond2没有意义。同样在cond1 && con2中,如果cond1true,则cond2将不会被评估,因为它是多余的。