2016-10-29 7 views
0

ここに私が書いたコードの一部です。出力は本当に混乱しています。私はコードがかなり正確だと感じています。Javaでスタックされてリストのリスト

List<List<Float>> deg_grp = new ArrayList<>(); 
List<Float> tempo = new ArrayList<>(); 
int u = 3; 
for (int y = 0; y < 3; y++) { 
    tempo.clear(); 
    for (int p = 0; p < u; p++) { 
     System.out.println(p); 
     tempo.add(p * 0.25f); 
    } 
    u++; 
    System.out.println("--"); 
    deg_grp.add(tempo); 
} 
System.out.println(deg_grp); 

と、ここで私が得た出力である:

0 
1 
2 
-- 
0 
1 
2 
3 
-- 
0 
1 
2 
3 
4 
-- 
[[0.0, 0.25, 0.5, 0.75, 1.0], [0.0, 0.25, 0.5, 0.75, 1.0], 
[0.0, 0.25, 0.5, 0.75, 1.0]] 

私は、出力は次のようになりたいので、私は本当に混乱しています: [[0.0,0.25,0.50]、[0.0、 [0.0,0.25,0.50,0.75,1.0]]

私を助けてください。 ありがとうございます。

答えて

1

最初のループでテンポを初期化します。それをクリアすることは正しい方法ではありません。あなたは常に同じテンポの配列を使うからです。リストのすべての要素が自動的に変更されます。リストの仕組みを確認してください。

1

あなたは常に同じリストを使用しています。したがって、tempoをクリアしてアイテムを追加すると、すべてのエントリがdeg_grpに変更されます。

最初のforループでは、tempoをクリアする代わりに、新しいリストを割り当てる必要があります。

関連する問題