有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

    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) 个答案

  1. # 1 楼答案

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

    1. 你正在计算细胞本身(1,1)。这使得计数1过高。引入if以避免计算(r,c)位置本身
    2. j{}循环中,在它到达c + 1之前,你停得太早了。这使得计数2过低(缺少2个匹配项)。将条件更改为j<=c+1,以与i{}循环条件一致

    这两个错误(+1和-2)的综合效应解释了为什么你的计数低了1