gpt4 book ai didi

java - ArrayOutofBounds 异常,即使它检查正方形是否在边缘

转载 作者:太空宇宙 更新时间:2023-11-04 13:23:16 24 4
gpt4 key购买 nike

此代码是我的康威生命游戏模拟代码的一部分。这种特殊的方法是一个“步骤”,将游戏向前推进了一代人。当它尝试检查直方图是真还是假时似乎出现错误(目前这是一个 10 x 10 boolean 数组)。该代码的目的是检查每个方格并计算每个方格有多少个邻居。我有 if 语句,以便边缘和角落上的方 block 在特殊条件下运行(例如,右上角的方 block 不检查直上、右上和右上的方 block )

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 10
at Life.step(Life.java:71)

错误如上,第 71 行是 if 语句,直接向下检查邻居

public void step() {
System.out.println("Step");
System.out.println(cells.length);
System.out.println(cells[0].length);
boolean[][] nextCells = new boolean[cells.length][cells[0].length];
for (int row = 0; row < cells.length; row++) {
for (int col = 0; row < cells[0].length; col++) {
int neighborCount = 0;
// checks for neighbor straight down
if (row > 0 && cells[row - 1][col] == true) {
neighborCount++;
}
// lower right
if (row > 0 && col < cells[0].length - 1 && cells[row - 1][col + 1] == true) {
neighborCount++;
}
// right
if (col < cells[0].length - 1 && cells[row][col + 1] == true) {
neighborCount++;
}
// upper right
if (row < cells.length - 1 && col < cells[0].length - 1 && cells[row + 1][col + 1] == true) {
neighborCount++;
}
// straight up
if (row < cells.length - 1 && cells[row + 1][col] == true) {
neighborCount++;
}
// upper left
if (row < cells.length - 1 && col > 0 && cells[row + 1][col - 1] == true) {
neighborCount++;
}
// left
if (col > 0 && cells[row][col - 1] == true) {
neighborCount++;
}
// lower left
if (row > 0 && col > 0 && cells[row - 1][col - 1]) {
neighborCount++;
}

最佳答案

查看上方抛出错误的行:

for (int col = 0; <强> row < cells[0].length; col++) {

这应该是:

for (int col = 0; <强> col < cells[row].length; col++) {

关于java - ArrayOutofBounds 异常,即使它检查正方形是否在边缘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32869807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com