为什么这个数组显示和错误消息(Eclipse)

时间:2014-04-08 01:14:57

标签: java arrays eclipse error-handling

int[] myArray = new int[] {1,2,3,4,5,6,7,8,9,10};        

for(int number : myArray) {
    System.out.println(myArray[number]);
}

这是输出:

2
3
4
5
6
7
8
9
10

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
    at javaPractice.selfAssignArrays.main(selfAssignArrays.java:10)

它有什么问题?

3 个答案:

答案 0 :(得分:1)

你想这样做:

for (int number : myArray) {
    System.out.println(number);
}

这相当于:

for (int i=0; i<myArray.length; i++)  {
    int number = myArray[i];
    System.out.println(number);
}

答案 1 :(得分:0)

由于增强型for循环将number设置为myArray中的每个,而不是每个索引。 (请注意,要打印的第一个元素是2,它是索引1处的元素。)增强的for循环或多或少等同于:

for (int i = 0; i < myArray.length; i++) {
    int number = myArray[i];
    System.out.println(myArray[number]);
}

你想要的是:

for (int number : myArray) {
    System.out.println(number);
}

答案 2 :(得分:0)

对于每次迭代,您从数组中获取数字,并将数字作为索引。这就是ArrayIndexOutOfBoundsException发生的原因。

  

的System.out.println(myArray的[1]);的System.out.println(myArray的[2]);   的System.out.println(myArray的[3]);的System.out.println(myArray的[4]);   的System.out.println(myArray的[5]);的System.out.println(myArray的[6]);   的System.out.println(myArray的[7]);的System.out.println(myArray的[8]);   的System.out.println(myArray的[9]);的System.out.println(myArray的[10]);

得到它? 您应该从System.out.println(myArray[0]);开始,到System.out.println(myArray[9]);结束 或者,只需将数字输出为System.out.println(number);