为什么我的计数被返回错误值?

时间:2014-09-10 19:12:06

标签: java conways-game-of-life

    public static int countNeighbors(boolean[][] BB, int r, int c) {
    int countalive = 0;
    for (int i = r -1;i<=r+1; i++) {
        for (int j = c -1; j<c+1;j++) {

            if (BB[i][j]) {
                countalive++;

            }

        }
    }
    return countalive;
}

正在阅读矩阵。

oooooooo
o###oooo
o####o#o
ooo##o#o
o#o#o##o
oooooooo

我注意到了一些错误,所以我打印出了这部分代码。使用规范运行时

countNeighbors(myNewMatrix,1,1)

我得到的返回值为2,当它应该是3时。

计算围绕它的真实(#)的平铺数量。

这是一场“生命游戏”任务。

1 个答案:

答案 0 :(得分:3)

(1,2),(2,1)和(2,2)有(1,1)的3个邻居。您的代码在2个帐户中出错:

  1. 你正在计算细胞本身(1,1)。这使得计数1太高。引入if以避免计算(r,c)位置本身。
  2. 您在j for循环中过早停止,然后才转到c + 1。这使得计数2太低(缺少2个匹配)。将条件更改为j<=c+1,以与i for循环条件保持一致。
  3. 两个错误(+1和-2)的综合影响解释了为什么你的计数低1