当与数组一起使用时,foreach导致Java中的越界错误

时间:2016-01-15 21:20:40

标签: java arrays foreach

我想使用foreach循环打印数组中的所有元素

int[] array={1,2,3,4,5};
   for(int i:array)
       System.out.println(array[i]);

编译器给了我这个错误/警告

线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:5

但是当我打印别的东西时

int[] array={1,2,3,4,5};
   for(int i:array)
       System.out.println("Print something");

它写了“打印东西”五次并且没有发出警告/错误。

我认为它必须做一些事情,数组中的第一个元素有索引0,但我不确定。

有人可以解释原因吗?

2 个答案:

答案 0 :(得分:2)

您正在迭代分配给i的数组内容,因此代码转换为

System.out.println(array[1]);
System.out.println(array[2]);
System.out.println(array[3]);
System.out.println(array[4]);
System.out.println(array[5]);   // ArrayIndexOutOfBoundsException

答案 1 :(得分:0)

在第一块代码中,您打印数组中的所有元素。您将遍历数组中的所有元素,并且对于要打印数组中与该元素值相对应的条目的每个元素。

你想要的是这个:

int[] array={1,2,3,4,5};
   for(int i:array)
       System.out.println(i);