2017-04-12 7 views
0

Ich versuche, eine ArrayList mit einer Schleife zu füllen. Was mache ich falsch? Wenn ich die ArrayList drucke, wird nichts gedruckt. Ich denke, dass mein Problem mit numbers.size() zusammenhängt.Füllen Sie eine ArrayList mit for-Schleife

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

diesen Link ansehen: http://stackoverflow.com/questions/7935613/adding-to-an-arraylist-java – programmingblues

+0

Hallo, ich oben keine Druckmethode, aber hier ist meine Druckmethode: public static void print (ArrayList nums) { für (int n: nums) { System.out.println (n); } – Carl

Antwort

1

Zu Beginn ist die Liste leer, was bedeutet, numbers.size() kehrt 0. Daher wird die Schleife nie eingegeben, da 1 <= 0false ist.

+0

Ah ich sehe, wie könnte ich Werte mit einer Schleife hinzufügen. Ist das möglich? – Carl

1

In Zeile ArrayList<Integer> numbers = new ArrayList<>(7); 7 - ist nicht Größe. Die Größe ist immer noch gleich 0, weil Sie keine Elemente hinzugefügt haben. Also numbers.size() ist 0.

Argument im Konstruktor ist initialCapacity. Dies ist eine Startlänge des internen Arrays in ArrayList.

+0

Ah ich sehe, wie könnte ich Werte mit einer Schleife hinzufügen. Ist das möglich? – Carl

+0

@Carl Ersetzen Sie einfach 'i <= numbers.size()' zu 'i <= 7' –

+1

@VladimirParfenov Keine gute Idee, es zu codieren – Bthegreatest

1

Das Problem ist mit numbers.size(). Diese Linie ArrayList<Integer> numbers = new ArrayList<>(7); eine Arraylist mit Anfangskapazität genug gleich oder höher als 7 erstellen, aber die Größe des erzeugten Arraylist ist 0. Also das Programm nicht statt der Schleife

+0

Ich verstehe jetzt, danke für Ihre Hilfe – Carl

1

Sie haben zwei Probleme hier geht:

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

Sie müssen den Typ für beide Seiten der Zuordnung bei 0 für Arrays und Arraylisten angeben

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

Indizes starten, so stellen i Null, und verwenden Sie eine weniger als anstelle von weniger als oder gleich -zu. Schließlich sollte dies funktionieren. Gerade editiert, scheint mir etwas falsch zu liegen. Machen numbers.size() ein, anstatt konstant, und das sollte funktionieren

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

" * Sie müssen den Typ für beide Seiten der Zuordnung * angeben "wenn Sie sprechen über * generischen Typ * dann es seit Java 7 können wir den Diamantoperator '<>' verwenden, anstatt den generischen Typ erneut zu schreiben. – Pshemo

+0

Ich verstehe jetzt, danke für Ihre Hilfe – Carl

Verwandte Themen