android - android中ArrayIndexOutOfBoundsException的起源?

标签 android onclick logcat indexoutofboundsexception

我制作了一个 5x5 的二​​维方形按钮阵列,它在一个名为 organisms 的类中定义,并将它们从右到左、从上到下排列到游戏板上。单击生物体时,它会改变颜色(再次单击它会恢复其原始颜色)。当您单击阵列一侧的(不同的,非生物体)按钮时,阵列中已被单​​击的那些生物体右侧的所有按钮本身都应该改变颜色。在代码中,这个 onClick 方法被称为 IterateListener()

问题来了。我尝试完成最后一部分,点击侧面的按钮,应用程序停止,我得到一个 ArrayIndexOutOfBounds。

E/AndroidRuntime(893): Caused by: java.lang.ArrayIndexOutOfBoundsException: length=5;指数=5

我确定它指的是数组中间的一个有机体,所以右边的有机体应该在范围内。还有什么会抛出 arrayIndexOutOfBounds?如果您还想查看代码的更多部分,请告诉我,但现在我只展示 Logcat 特别提示的代码部分。

这是 getRightOrganism 的代码:

public Organism findRightOrg(Organism org) {
    return Col[org.getRow() + 1][org.getCol()];

}

这是 onClick 的代码:

public void IterateListener(View v) {
    for (int i = 0; i < colony.getWidth(); i++)
        for (int j = 0; j < colony.getHeight(); j++) {
            if (colony.getOrg(i, j).isAlive()) {
                colony.findRightOrg(colony.getOrg(i, j)).liveO();
                }
        }
}

非常感谢!

最佳答案

好吧,在数组中,您只能从 0 迭代到 length-1。因此,在您的 i = colony.getWidth() - 1 中,您尝试查找具有 row = lenght-1+1 = length 的元素,它超出了那个数组。

关于android - android中ArrayIndexOutOfBoundsException的起源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29711539/

相关文章:

javascript - 如何使用 `document.getElementByID("结果进行打印").innerHTML = 结果?

android - 如何设置android :onClick in xml of a custom view?

android - 申请被击中

java - Android 无法解释的 LogCat 错误

java - 我的逐项叠加层和 Google map 中的叠加层有何区别?

onclick - 为什么 onclick 在 Rails4 和 coffeescript 中使用 turbolinks 的第二页请求不起作用?

android - 保存Android项目以在PC上运行(eclipse)

android - 如何选择 LogCat 在 Eclipse 中显示的设备?

android - 如何删除 Android Studio 中的重复文件

android - install_referrer Intent 弃用和更新库