ためのネストしたJavaのトレースコードセグメントは次のとおりです。がループ
ArrayList<ArrayList<Integer>> outer = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> inner = new ArrayList<Integer>();
int count = 0;
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
count++;
inner.add(count);
}
outer.add(inner);
}
System.out.println(outer);
私はこのようなループをトレース:i = 0
、インナーは[1, 2, 3]
に更新されるとき 。したがって、outer
は[[1, 2, 3]]
になります。
i = 1
の場合、inner
は[1, 2, 3, 4, 5, 6]
に更新されます。したがってouter
あるoutput
は私がプログラムを実行すると、output
が実際[[1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6]]
ある、しかし[[1, 2, 3], [1, 2, 3, 4, 5, 6]]
になります。
これはなぜですか?私はここでは、コード
**同じ**配列を毎回追加しています。 –
コードは完全に役に立たない。 'inner'を常に' inner'に追加しています( 'inner'は整数ではないのでコンパイルされません。したがって、それ自体には適合しません)。決して数字は追加されません。あなたの言うことはあなたのコードに合っていません。コードを修正してください。 –
なぜ 'inner'を' inner'に追加するのですか? atleastを考えてみてください –