2017-03-21 9 views
0

私は次のコードを書き留めました。Javaリスト<int []>は正しく設定されていません

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

出力:

19 20 
19 20 
19 20 
. 
. 
19 20 

出力は、ある理由私は理解することはできません。私は毎回変更されているtemp配列でリストを作成しています。何が間違っているのですか?

+0

ええ。それは私が推測している:) –

答えて

6

Listには、同じ配列オブジェクトへの複数の参照が設定されています。 Listに要素を追加するループの各反復で新しい配列を作成する必要があります。

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

素晴らしい!私は愚かだと言いましたか? P:あなたは素晴らしいと言いましたか?ありがとう:) –

関連する問題