2014-04-08 59 views
0
int[] myArray = new int[] {1,2,3,4,5,6,7,8,9,10};   

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

,這是輸出:這是爲什麼陣列顯示和錯誤消息(Eclipse中)

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

數你認爲是正確的呢? 'myArray [number]'做了什麼?在每次迭代中'number'的每個值是什麼?什麼是數組的基本索引? –

回答

0

由於增強for迴路myArray設置number每個,而不是每個索引。 (請注意,正在打印的第一個元素是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); 
} 
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); 
} 
+0

''「+」不是必需的; 'System.out.println(number);'會做同樣的事情。 –

+0

是的你是對的。在setText()是一個嚴格的字符串類型的時候,做了太多的Android。我會編輯我的答案。 – dharms

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);