我想制作一个简单的程序,掷骰子1000次,并计算每个数字1-6出现的次数。它工作正常,但最后有一个错误。为什么会发生?
public class diceRollerCounter {
public static void main(String[] args) {
int dice [] = new int[7];
for(int x = 0 ; x <1000; x++ ) {
++dice [(int)(Math.random()*6+1)];
}
System.out.println("Number Frequency" );
for(int index = 0; 1 < dice.length ; index++) {
System.out.println(index + " " + dice[index]);
}
}
}
输出:
Number Frequency
0 0
1 170
2 143
3 188
4 165
5 173
6 161
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
at diceRollerCounter.main(diceRollerCounter.java:20)
答案 0 :(得分:3)
for
循环条件测试1
是否小于dice.length
,并且始终为true
。但是你继续递增index
直到它不在数组的末尾。
而是测试index
是否小于dice.length
。
顺便提一下,您可能希望将index
初始化为1
,以便跳过频率为0
的数字0
的输出。