java - JAVA忽略越界异常的简单方法

标签 java

我正在创建一个类似扫雷器的应用程序,并且有一些代码旨在检查一个非地雷空间周围有多少地雷。我为此创造了一些东西

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/

相关文章:

java - 如何在这里杀死reverseTimer

java - @RequestMapping java.lang.AssertionError : Status Expected :200 Actual :404

java - 编写无限循环

java - 列出前 12 个月

java - 在 Intellij IDEA 中如何在 carret 旁边显示小的下拉窗口?

java - 如何通过 micronaut Http Client 将 grails 应用程序连接到 Consul?

java - 用Java做一个多页打印作业

Java 8 : Duplicate method name&signature lambda

java - spring security - 身份验证中的sessionId为空

java - Spring Boot 在 web.xml 中启用 <async-supported>