みんな。
私はJavaを始めたばかりで、敵がグリッド上でプレイヤーを追いかける簡単なゲームを書こうとしています。パスファインディングに関するウィキペディアのページから、パスファインディングに単純なアルゴリズムを使用しています。これには、各リスト項目に3つの整数が含まれる2つのリストを作成することが含まれます。これが私がそのようなリストを作成して表示しようとしているテストコードです。
次のコードを実行すると、ArrayListの各配列に同じ番号が出力されます。なぜこれを行うのですか?
public class ListTest {
public static void main(String[] args) {
ArrayList<Integer[]> list = new ArrayList<Integer[]>();
Integer[] point = new Integer[3];
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 3; j++) {
point[j] = (int)(Math.random() * 10);
}
//Doesn't this line add filled Integer[] point to the
//end of ArrayList list?
list.add(point);
//Added this line to confirm that Integer[] point is actually
//being filled with 3 random ints.
System.out.println(point[0] + "," + point[1] + "," + point[2]);
}
System.out.println();
//My current understanding is that this section should step through
//ArrayList list and retrieve each Integer[] point added above. It runs, but only
//the values of the last Integer[] point from above are displayed 10 times.
Iterator it = list.iterator();
while (it.hasNext()) {
point = (Integer[])it.next();
for (int i = 0; i < 3; i++) {
System.out.print(point[i] + ",");
}
System.out.println();
}
}
}