【发布时间】:2014-04-13 16:17:42
【问题描述】:
我正在尝试遍历一组brickEnemies,如果我的条件为真,那么应该从我的数组中删除砖块。我收到以下错误 IndexOutOfBoundsException。删除元素后如何让 for 循环继续运行?
int lengthofBrickEnemies = brickEnemies.size();
for (int i = 0; i < lengthofBrickEnemies; i++) {
Brick brick = brickEnemies.get(i);
int newPosition_X = brick.getPositionX() - SPEED;
if (newPosition_X > 0) {
brick.setPositionX(newPosition_X);
} else {
brickEnemies.remove(i);
}
}
【问题讨论】:
-
不是数组,是数组列表对吧?
-
是的,Marco 它是一个 ArrayList
-
您正在循环中更改数组。这意味着它会随着您的循环运行而缩短,并且您的
lengthofBrickEnemies反映了 OLD 大小。例如一个包含 100 个元素的数组,删除 10 个,你仍然会循环到 100 个,但现在只有 90 个元素,你会跑出数组的末尾。 -
检查我的答案@Pierre 我使用了相同的代码,但是您在删除时在条件和修改索引方面犯了一些错误