以下代码产生运行时错误,但我无法弄清楚出了什么问题。代码中的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);
}
}
}
答案 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)){