我正在创建一个类似扫雷器的应用程序,并且有一些代码旨在检查一个非地雷空间周围有多少地雷。我为此创造了一些东西
int count = 0;
if(model.get(i-1, j-1) == MinerGridCo.UNTURNED_MINE){ count++;}
if(model.get(i, j-1) == MinerGridCo.UNTURNED_MINE){ count++;}
if(model.get(i-1, j) == MinerGridCo.UNTURNED_MINE){ count++;}
if(model.get(i+1, j) == MinerGridCo.UNTURNED_MINE){ count++;}
if(model.get(i, j+1) == MinerGridCo.UNTURNED_MINE){ count++;}
if(model.get(i-1, j+1) == MinerGridCo.UNTURNED_MINE){ count++;}
if(model.get(i+1, j-1) == MinerGridCo.UNTURNED_MINE){ count++;}
if(model.get(i+1, j+1) == MinerGridCo.UNTURNED_MINE){ count++;}
String mineNum = String.valueOf(count);
cell[i][j].setText(mineNum);
但是,当旨在获取板边缘周围的地雷编号时,这会产生错误。有什么有用的方法可以避免这种情况?
尝试以下建议后。我仍然遇到越界错误。任何人有任何建议,如果有人想自己编译,这里是 repo https://github.com/phillolivercomp/MineSweeper.git
最佳答案
帮自己一个忙,创建 model.countUnturnedMinesAround(i,j)
。然后在模型内部你有一些选择。
您可以创建 View 看不到的额外行/列,以便您可以安全地处理逐一索引。
或者您可以编写一个函数 private Cell getCell(i,j)
,当 i 和 j 越界时返回默认的空单元格。
或者您可以让 boolean hasUnturnedMine(i,j)
在 i 或 j 离开网格时返回 false。
关于java - JAVA忽略越界异常的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25573199/