繁体   English   中英

读取二维数组的问题-Java

[英]Issues with reading a 2d Array - Java

我正在尝试使用2d数组进行Conway的生活游戏。 该方法应该查看2d数组上的每个位置,并检查其每个邻居,并计算该位置周围有多少邻居(0为空,1被占用)。 然后,它执行一些逻辑并确定该位置是死的还是活的。 我遇到的问题是,当它检查第二个位置时,tempMatrix的值是错误的。 我特别在检查第一个位置[0] [0],它从0变为1,我不知道为什么。 预先感谢您的帮助!

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

您的inputMatrix outputMatrixtempMatrix引用相同的2D数组。 因此,当您通过以下代码修改outputMatrix

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

tempMatrix的值也会更改。 因此,尝试为所有三个矩阵创建新的2D数组,然后复制该值。

int inputMatrix[][]=new int[dimension][dimension];

现在,将_array matrix的值复制到inputMatrix

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM