2次元配列を使用してConwayのゲームをしようとしています。このメソッドは、2次元配列上のすべての位置を見て、その近傍をチェックし、その位置を囲んでいる近隣の人数を数えます(0は空、1は占有されています)。次に、ロジックを実行し、その位置が死んでいるか生きているかを判断します。私が抱えている問題は、tempMatrixの値が間違っているということです。私は具体的に最初のポジション[0] [0]をチェックしていて、0から1に変わり、理由は分かりません。ご協力いただきありがとうございます!2d配列の読み込みに関する問題 - Java
public static int[][] Evolve(int[][] _array){
inputMatrix = _array;
outputMatrix = inputMatrix;
int [][] tempMatrix = inputMatrix;
System.out.println("Output Matrix:");
for (int x = 0; x < size; x++){
for (int y = 0; y < size; y++){
int neighbor_count = 0;
ArrayList<int[]> neighbors = getNeighbors(x,y);
for(int[] neighbor: neighbors){
int tempX = neighbor[0];
int tempY = neighbor[1];
int temp = tempMatrix[tempX][tempY];
if(temp == 1){
neighbor_count++;
}
}
if(tempMatrix[x][y] == 1){
if(neighbor_count == 1 || neighbor_count > 3) {
outputMatrix[x][y] = 0;
}
else{
outputMatrix[x][y] = 1;
}
}else if(neighbor_count == 3){
outputMatrix[x][y] = 1;
}else{
outputMatrix[x][y] = 0;
}
System.out.printf("%2d ",outputMatrix[x][y]);
}
System.out.println();
}
return outputMatrix;
}
あなたの 'outputMatrix'と' tempMatrix'は単に 'inputMatrix'を指していて、まったく同じものです。現在、配列は1つしかありませんが、その配列にアクセスするために使用できる3つの変数名があります。あなたの意図は実際にコピーを作ることだったと思いますが、それは自動的には起こりません。 –
も参照してください:[配列Javaのコピーを作成する](https://stackoverflow.com/questions/5785745/make-copy-of-array-java) –
配列の唯一の値が0と1の場合は、 'boolean [] [] '代わりに? – jsheeran