2015-10-13 93 views
-1

我試圖運行此增強型for循環,但它會引發錯誤。當我將數組中元素的數量增加到8時,它就起作用了。數組中是否有最少數量的元素可用?元素的最小數目Java中的增強型for循環

public class Demo { 
    public static void main(String[] args){ 
     int numbers[]; 
     numbers = new int[] {5,6,7,5,5}; 

     for(int i : numbers){ 
      System.out.println(numbers[i]); 
     } 
    } 
} 

回答

3

不,沒有最小數量的元素供它使用;你誤解了它的功能。分配給i的值是數組中的值,而不是數組中的索引,但是您將這些值視爲索引,並且在5個元素的數組中,索引7(或56)不存在。這也是爲什麼當你放8個元素時它會工作。索引7現在存在。

只需打印i。這是價值。

System.out.println(i); 

您可能要考慮重新命名ivalue,或number,或更多的東西指示的是什麼,爲了避免混淆,因爲i通常用於在標準for循環索引變量。

+0

也許建議將'i'重命名爲'number',因爲'i'對於索引變量是「保留」的(通過約定),這是引起混淆的原因。 – Andreas

0

打印i。不是數字[I] i是實際值不項目索引數組中並有例如[5]沒有數字,這將拋出異常

0

該代碼包含一個簡單的邏輯錯誤:

for(int i : numbers){ //<-- loop over all integers in numbers (i will hold the value in the array 
    System.out.println(numbers[i]); //<-- get the element at position i 
} 

numbers[5] 
numbers[6] 
numbers[7] 
... 

決定是否使用一個foreach環直接迭代數組中的所有元素(for(int i : numbers))和簡單地從迭代打印值:

基本上您的代碼會做的該序列的陣列中讀取( System.out.println(i)),或者遍歷指數,[0 , numbers.length)並使用System.out.println(numbers[i])

您遇到的「最小數量」只是由於7是數組中最大的數字,因此數組必須至少爲8才能訪問numbers[7]而不會引發任何異常。