我收到了错误..
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at Reverse.main(Reverse.java:20).
语法没有错,所以我不确定为什么编译时会出错?
public class Reverse {
public static void main(String [] args){
int i, j;
System.out.print("Countdown\n");
int[] numIndex = new int[10]; // array with 10 elements.
for (i = 0; i<11 ; i++) {
numIndex[i] = i;// element i = number of iterations (index 0=0, 1=1, ect.)
}
for (j=10; j>=0; j--){ // could have used i, doesn't matter.
System.out.println(numIndex[j]);//indexes should print in reverse order from here but it throws an exception?
}
}
}
答案 0 :(得分:18)
您在10 elements
的整数上声明了数组。而且您正在i=0 to i=10
和i=10 to i=0
11 elements
进行迭代。显然它是index out of bounds error
。
将您的代码更改为此
public class Reverse {
public static void main(String [] args){
int i, j;
System.out.print("Countdown\n");
int[] numIndex = new int[10]; // array with 10 elements.
for (i = 0; i<10 ; i++) { // from 0 to 9
numIndex[i] = i;// element i = number of iterations (index 0=0, 1=1, ect.)
}
for (j=9; j>=0; j--){ // from 9 to 0
System.out.println(numIndex[j]);//indexes should print in reverse order from here but it throws an exception?
}
}
}
记住索引从0开始。
。
答案 1 :(得分:3)
Java使用基于0的数组索引。当您创建大小为10 new int[10]
的数组时,它会在数组中创建10个整数“单元格”。索引是:0,1,2,....,8,9。
你的循环计数到1小于11或10的索引,并且该索引不存在。
答案 2 :(得分:1)
数组的大小为10,这意味着它可以从0到9进行索引。numIndex[10]
确实超出范围。这是一个基本的逐个错误。
答案 3 :(得分:1)
具有Array
元素的java中的10
从0
变为9
。所以你的循环需要覆盖这个范围。目前,您从0
转到10
,10
转到0
。