Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 生命游戏失灵_Java_Logic - Fatal编程技术网

Java 生命游戏失灵

Java 生命游戏失灵,java,logic,Java,Logic,为什么我的人生游戏不能正常运行? 他们并不总是在拥挤的时候死去 相关代码是grann(x,y),它应该返回围绕基质[x][y]的活细胞数量, run应计算下一代: private int grann(int x,int y) { int n = 0; for(int i=-1; i<2; i++) { for(int j=-1; j<2; j++) { if(i!=0 || j!=0) { if(

为什么我的人生游戏不能正常运行? 他们并不总是在拥挤的时候死去

相关代码是grann(x,y),它应该返回围绕基质[x][y]的活细胞数量, run应计算下一代:

private int grann(int x,int y) {
    int n = 0;
    for(int i=-1; i<2; i++) {
        for(int j=-1; j<2; j++) {
            if(i!=0 || j!=0) {
                if(matrix[x+i][y+j]) {
                    n++;
                }
            }
        }
    }
    return n;
}
public void run() {
    boolean[][] next = matrix;
    for(int i=1; i<w; i++) {
        for(int j=1; j<h; j++) {
            int n = grann(i,j);
            if(matrix[i][j]) {
                if(!(n==2 || n==3)) {
                    next[i][j] = false;
                }
            } else {
                if(n==3) {
                    next[i][j] = true;
                }
            }
        }
    }
    matrix = next;
}
private int grann(int x,int y){
int n=0;

对于(inti=-1;i我认为问题在于grann应该说:

if(i != 0 && j != 0)

因为您只想消除正在检查的3x3区域的中心正方形(单元格本身),而不是它所在的行和列。

因为
next=matrix
不复制矩阵。它们都指向同一个对象。因此您所做的更改会影响周围单元格的计算。可能的重复我应该使用循环复制它,还是有更简单的方法?请参阅以复制2d数组。我将自己制作,但不是汉克斯!