我目前正在使用netbeans ide开发conway的生活游戏版本,我想将单元格存储在矩阵中。对于下一代单元的操作,我将返回一个新的单元矩阵,该矩阵由输入矩阵计算得出。
代码如下:
public static Cell[][] nextGen(Cell[][] CellList)
{
Cell[][] Copy = CellList.clone();
for (int i = 0; i<Copy.length; i++)
{
for(int n = 0; n<Copy[i].length; n++)
{
if (Copy[i][n].isAlive())
{
if (Cell.count(Copy, i, n) <= 1 || Cell.count(Copy, i, n) >= 4 )
{
CellList[i][n].kill();
}
}else
{
if (Cell.count(Copy, i, n) == 3)
{
CellList[i][n].born();
}
}
}
}
return CellList;
}
该类称为“cell”,它有一个私有布尔属性“alive”,可以使用public方法将其设置为false kill()
或者对公共方法是正确的 born()
. 除了计算特定细胞周围活细胞的方法和计算新一代细胞的方法外,其他方法都是非静态的。
它不起作用的问题是,如果我对输入矩阵“celllist”进行任何更改,同样的事情也会发生在该矩阵的副本中。
如何让副本具有相同的值,但仅在输入矩阵中进行更改?谢谢你的帮助!
1条答案
按热度按时间db2dz4w81#
你所做的是浅拷贝,你需要的是深拷贝。试试这个
}