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,2)、(2,1)和(2,2)处有3个邻居。您的代码在两个帐户上出错:
if
以避免计算(r,c)位置本身李>j
{c + 1
之前,你停得太早了。这使得计数2过低(缺少2个匹配项)。将条件更改为j<=c+1
,以与i
{这两个错误(+1和-2)的综合效应解释了为什么你的计数低了
1