计算相邻单元格

时间:2015-06-20 14:32:57

标签: java function for-loop

我不明白这个循环有什么问题,它通常会检查(x,y)的周围单元格。 调用此函数时,循环中只有4个段落而不是8个段落 这可能是一个愚蠢的错误,但我看不到它!

private int countAliveNeighbors(int x, int y) {
    int count = 0;
    for (int i = Math.max(0, x - 1); i < Math.min(grid.getWidth()-1, x + 1); i++) {
        for (int j = Math.max(0, y - 1); j < Math.min(grid.getHeight()-1, y + 1); j++) {
            if (!(i == x && j == y)) {
                if (grid.isAlive(i, j))
                    count++;
            }
        }
    }
    return count;
}

1 个答案:

答案 0 :(得分:1)

for语句中的上限应该通过检查<=而不仅仅是小于。x+1。在到达y+1for (int i = Math.max(0, x - 1); i <= Math.min(grid.getWidth()-1, x + 1); i++) { for (int j = Math.max(0, y - 1); j <= Math.min(grid.getHeight()-1, y + 1); j++) { 之前,通过测试的时间少于停止。它应该是这样的:

preg_replace("/([^; ]+)=>([^; ]+)/", "ec_set('$1',$2);", $input_lines);