Java无限循环错误

时间:2014-07-16 23:14:51

标签: java

以下代码产生运行时错误,但我无法弄清楚出了什么问题。代码中的while循环不会停止运行,这会导致运行时错误(我假设)。任何帮助将不胜感激。

import java.lang.Math;
class Test
{
public static void main (String[] args) throws java.lang.Exception
{
    int first = 0;
    int sum = 0;
    int second = 0;
    while((((((sum!=4 || sum!=5) || sum!=6) || sum!=8) || sum!=9) || sum!=10)){
        first = 1 + (int)(Math.random() * ((6 - 1) + 1));
        second = 1 + (int)(Math.random() * ((6 - 1) + 1));
        sum = first+second;
        System.out.printf("Computer rolls a %d and a %d, for a total of %d.%n",first,second,sum);
    }


}
}

1 个答案:

答案 0 :(得分:4)

while循环条件表示逻辑错误,而不是JVM抛出的任何类型的运行时错误。 sum始终是"而不是4"或"不是5"或者"没有任何其他号码"。你想要一个合乎逻辑的"和"。尝试

while(sum!=4 && sum!=5 && sum!=6 && sum!=8 && sum!=9 && sum!=10){

您还可以使用以下内容缩小列表:

while((sum < 4 || sum > 6) && (sum < 8 || sum > 10)){

或者:

List<Integer> exitValues = Arrays.asList(4, 5, 6, 8, 9, 10);
while(!exitValues.contains(sum)){