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)
它有什么问题?
答案 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);