我发现奇怪(至少对我而言)异常抛出。让我做得够短。有一种方法可以返回一个带有随机值的数组。在main方法中,我使用foreach循环来显示存储在我的数组中的每个值。
tab[i] = (int) ((Math.random()*10));
在我设置最小值之前一切正常。
tab[i] = (int) ((Math.random()*10)+1);
线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException: 10
有人可以向我解释一下吗?我不知道右侧的+1如何影响数组的大小。
编辑:完整代码
import java.lang.Math;
public class Arrays {
static private int[] makeArray(int wide) {
int[] tab = new int[wide];
for(int i=0;i<tab.length;i++) {
tab[i] = (int) ((Math.random()*10)+1);
}
return tab;
}
public static void main(String[] args) {
int tabby[] = makeArray(10);
for(int i : tabby) {
System.out.println(tabby[i]);
}
}
}
答案 0 :(得分:4)
for (int i : tabby)
为您提供tabby
数组中的值,而不是数组的索引(0到9)。只需System.out.println(i)
。
编辑:详细说明,您应该看到此程序间歇性地抛出异常,因为您的随机数分配有十分之一的机会产生数字10,而tabby[10]
将超出界限。< / p>