2017-03-21 1 views
0

Ich habe den folgenden Code notiert.Java-Liste <int []> wird nicht korrekt ausgefüllt

ArrayList<int []> l = new ArrayList<>(); 
    int [] temp = new int[2]; 
    int n=1; 
    for(int i=0;i<10;i++) 
    { 
     for(int j=0;j<2;j++) 
     { 
      temp[j]=n++; 
     } 
     l.add(temp); 
    } 

    for(int i=0;i<10;i++) 
    { 
     for(int j=0;j<2;j++) 
     { 
      System.out.print(l.get(i)[j] + " "); 
     } 
     System.out.println(); 
    } 

Der Ausgang:

19 20 
19 20 
19 20 
. 
. 
19 20 

Ich kann nicht verstehen, warum die Ausgabe so ist. Ich bevölke die Liste mit Temp-Array, die jedes Mal ändert. Was mache ich falsch?

+0

Ja. Es ist ich denke :) –

Antwort

6

Sie füllen die List mit mehreren Referenzen auf das gleiche Array-Objekt. Sie müssen in jeder Iteration der Schleife ein neues Array erstellen, das Elemente zu List hinzufügt.

for (int i = 0; i < 10; i++) { 
    int [] temp = new int[2]; 
    for (int j = 0; j < temp.length; j++) { 
     temp[j] = n++; 
    } 
    l.add(temp); 
} 
+0

Großartig! Habe ich erwähnt, dass ich dumm bin? : P und habe ich erwähnt, dass du großartig bist? Vielen Dank :) –

Verwandte Themen