如何处理此异常“ ArrayIndexOutOfBoundsException”,我的代码是:创建一个长度为64的数组,然后初始化每个索引,然后打印索引以确保填满所有索引,但它最多打印63个,然后给出异常!任何的想法 public static void main(String [] arg) { int [] a=new int [64]; for(int i=1;i<=a.length;i++){ a[i]=i; System.out.println(i); }}Java
3 回答

动漫人物
TA贡献1815条经验 获得超10个赞
参见JLS-Arrays:
如果一个数组有n个分量,我们说n是数组的长度;使用0到n-1(含)之间的整数索引来引用数组的组成部分。
所以你必须遍历 [0,length()-1]
for(int i=0;i<a.length;i++) {
a[i]=i+1; //add +1, because you want the content to be 1..64
System.out.println(a[i]);
}

桃花长相依
TA贡献1860条经验 获得超8个赞
需要完整的解释吗?读这个
数组的索引始终始于0。因此,当数组中有64个元素时,它们的索引将来自0 to 63。如果要访问第64个元素,则必须通过进行a[63]。
现在,如果我们看看你的代码,那么你写你的条件是for(int i=1;i<=a.length;i++)在这里a.length将返回这是64数组的实际长度。
这里发生了两件事:
当您从1开始索引时,即i=1因此,您正在跳过数组中位于0th索引处的第一个元素。
最后,它试图访问a[64]元素,该65th元素将成为数组的元素。但是您的数组仅包含64个元素。这样你就得到了ArrayIndexOutOfBoundsException。
使用for循环迭代数组的正确方法是:
for(int i=0;i < a.length;i++)
索引从0开始到< array.length。
添加回答
举报
0/150
提交
取消