2017-04-12 111 views
0

我試圖用循環填充ArrayList。我究竟做錯了什麼?當我打印ArrayList時,沒有打印。我認爲我的問題與numbers.size()有關。用for循環填充ArrayList

ArrayList<Integer> numbers = new ArrayList<>(7); 
for (int i = 1; i <= numbers.size(); i++) { 
    numbers.add(i); 
} 
+0

請參閱此鏈接: http://stackoverflow.com/questions/7935613/adding-to-an-arraylist-java – programmingblues

+0

您好,我不包括上面的打印方法,但這裏是我的打印方法: public static void print(ArrayList nums){int n:nums} { System.out.println(n); } – Carl

回答

1

最初,該列表是空的,這意味着numbers.size()回報0。因此,將永遠不會輸入循環,因爲1 <= 0false

+0

啊我看到了,我怎麼可以使用循環添加值。那可能嗎? – Carl

1

在線ArrayList<Integer> numbers = new ArrayList<>(7); 7 - 不是大小。大小仍然等於0,因爲您沒有添加任何元素。因此numbers.size()爲0.

構造函數中的參數是initialCapacity。這是ArrayList中內部數組的起始長度。

+0

啊,我看到,我怎麼可以使用循環添加值。那可能嗎? – Carl

+0

@Carl只需將'i <= numbers.size()'替換爲'i <= 7' –

+1

@VladimirParfenov不是一個好主意硬編碼 – Bthegreatest

1

問題出在numbers.size()。這條線ArrayList<Integer> numbers = new ArrayList<>(7);創建初始容量足夠等於或大於7較高,但創造的ArrayList的大小爲0,所以程序不走,而不是你的循環

+0

我現在明白了,謝謝你的幫助 – Carl

1

您這裏有兩個問題一個ArrayList:

ArrayList<Integer> numbers = new ArrayList<>(7); 

你需要指定類型分配

for (int i = 1; i <= numbers.size(); i++) { 
    numbers.add(i); 

指標的陣列和的ArrayList從0開始的兩邊,這樣使我爲零,而是使用一個不太比低於或相等-至。最後,這應該工作。剛剛編輯這個,似乎我有點不對。讓numbers.size(),而不是一個常量,應該工作

ArrayList<Integer> numbers = new ArrayList<Integer>(7); 
for (int i = 0; i < 7; i++) { 
    numbers.add(i); 
} 
+0

「*你需要指定賦值雙方的類型*」如果你正在談論*泛型類型*那麼它自在Java 7中,我們可以使用菱形運算符'<>'而不是再次重寫泛型類型。 – Pshemo

+0

我現在明白了,謝謝你的幫助 – Carl