android 中 ArrayIndexOutOfBoundsException 的来源?
Origin of ArrayIndexOutOfBoundsException in android?
我制作了一个 5x5 的 2D 方形按钮阵列,它在一个名为 organisms 的 class 中定义,并将它们从右到左、从上到下排列到游戏板上。单击生物体时,它会改变颜色(再次单击它会恢复其原始颜色)。当您单击阵列一侧的(不同的,非生物体)按钮时,阵列中已被单击的那些生物体右侧的所有按钮本身都应该改变颜色。在代码中,这个onClick方法叫做IterateListener()
.
问题来了。我尝试做最后一部分,点击侧面的按钮,应用程序停止,我得到一个 ArrayIndexOutOfBounds。
E/AndroidRuntime(893): Caused by: java.lang.ArrayIndexOutOfBoundsException: length=5; index=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
的元素,它超出了该数组的范围。
我制作了一个 5x5 的 2D 方形按钮阵列,它在一个名为 organisms 的 class 中定义,并将它们从右到左、从上到下排列到游戏板上。单击生物体时,它会改变颜色(再次单击它会恢复其原始颜色)。当您单击阵列一侧的(不同的,非生物体)按钮时,阵列中已被单击的那些生物体右侧的所有按钮本身都应该改变颜色。在代码中,这个onClick方法叫做IterateListener()
.
问题来了。我尝试做最后一部分,点击侧面的按钮,应用程序停止,我得到一个 ArrayIndexOutOfBounds。
E/AndroidRuntime(893): Caused by: java.lang.ArrayIndexOutOfBoundsException: length=5; index=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
的元素,它超出了该数组的范围。