Java 数组的索引超出边界,尽管我从来没有这样的意思

Java 数组的索引超出边界,尽管我从来没有这样的意思,java,arrays,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.

我写了这个简单的代码

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]);
} 
int[]arr=newint[5];
System.out.printf(“请输入%d个数字:”,arr.length);
对于(int i1=0;i1=0;i1--){
系统输出打印(arr[i1]);
} 
当我试图反向打印数组时,我得到了一个错误
java.lang.ArrayIndexOutOfBoundsException


在我看来,我从来没有指出一个指数大于5。如何解决这个问题?

您的第二个循环应该以arr.length-1开始。那就行了。在反向循环中,您需要6个元素。因此出现错误。

这是因为数组索引必须介于0length-1之间。因此,您可以:

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

没有索引与数组长度相同的元素。倒计时时,必须从
length-1
向下到
0
数组的最大索引为4(0,1,2,3和4)。在第二个循环中,首先将数组的长度指定给i1,即5,因此超出范围。您应该使用长度-1

反向循环应该以
arr.length-1开始
为什么在
arr[j]=S.nextInt()中使用
j
作为索引基于
i1
的内部循环?由于
j
不会更改,因此您正在将
nextInt()
的结果写入array.Works中的相同位置。谢谢大家!!