所以我目前正在研究一个基于Conway的生命游戏的程序,这个特定的方法要求我更新2d数组来定义哪些单元格还活着。我已经运行了我的JUnit测试,但是当该方法的测试运行时,它表示它无限循环。有什么想法吗?
public void update() {
boolean temp ;
for (int i = 0; i < numberOfRows(); i++) {
for (int j = 0; j < numberOfColumns(); j++) {
temp = false;
if (cellAt(i, j)) {
temp = true;
}
if (temp=true) {
if (neighborCount(i, j) < 2 || neighborCount(i, j) > 3) {
society[i][j] = false;
}
} else {
if (neighborCount(i, j) == 3) {
society[i][j] = true;
}
}
}
}
}
以下是此处使用的其他方法
cellAt():
public boolean cellAt(int row, int col) {
if (society[row][col] == true) {
return true;
} else {
return false;
}
}
neighborCount():
public int neighborCount(int row, int col) {
int counter = 0;
for (int i = ((row + numberOfRows() - 1) % numberOfRows()); i == ((row + 1) % numberOfRows())
|| i == row
|| i == (((row + numberOfRows() - 1)) % numberOfRows())
|| i == numberOfRows(); i++) {
i = i % numberOfRows();
for (int j = (((col + numberOfColumns() - 1)) % numberOfColumns()); j == ((col + 1) % numberOfColumns())
|| j == col
|| j == (((col + numberOfColumns() - 1)) % numberOfColumns())
|| j == numberOfColumns(); j++) {
j = j % numberOfColumns();
if (society[i][j] == true) {
counter++;
}
}
}
return counter;
}
答案 0 :(得分:3)
您需要在此处使用比较(==
)而非分配(=
):
if (temp=true) {
将始终返回true
将其更改为
if (temp == true) {
或简单地使用“Jean-FrançoisSavard”建议
if(temp)
答案 1 :(得分:1)
想出来。 neighborCount()只是写得非常糟糕,for循环正在重复。