数组索引超出边界虽然我从来没有这么说过

时间:2014-11-30 22:25:19

标签: java arrays

我写了这个简单的代码

int[] arr = new int[5];

System.out.printf("Please enter %d numbers: ", arr.length);
for (int i1=0; i1<arr.length; i1++) {
    arr[j] = S.nextInt();
}
System.out.printf("The numbers you enterd in reverse order are: ");
for (int i1=(arr.length); i1>=0; i1--) {
    System.out.print(arr[i1]);
} 

当我尝试反向打印数组时,出现java.lang.ArrayIndexOutOfBoundsException错误。

正如我所看到的那样,我从未指出过大于5的指数。如何解决?

4 个答案:

答案 0 :(得分:2)

这是因为数组索引必须介于 0 length-1 之间。所以你可以这样做:

for (int i1=(arr.length - 1); i1>=0; i1--) {
...
}

答案 1 :(得分:1)

你的第二个循环应该以arr.length -1开头。然后它会工作。在你的反向循环中,你期待6个元素。因此错误。

答案 2 :(得分:1)

没有元素的索引与数组长度相同。倒计时时,您必须从length-1向下转到0

答案 3 :(得分:1)

数组的最大索引是4(0,1,2,3和4)。在你的第二个循环中,首先将数组的长度分配给i1,即5,因此超出界限。你应该使用长度 - 1