平台:JCreator
我通常使用从后面开始计数的循环,因为从理论上讲,当它们移除时它们会崩溃:
0123456789
删除偶数:
i = 9: 0123456789
i = 8 //remove 8: 012345679
i = 7: 012345679
i = 6 //remove 6: 01234579
等等
但是当删除对象时我得到了这个异常:
线程中的异常“AWT-EventQueue-0”java.lang.IndexOutOfBoundsException:Index:3,Size:3
for (int i = dArea.size() - 1; i >= 0; i--) {
if (dArea.get(i).getOwn() == 1) {
if (dArea.get(i).getSK() == 2) {
if (dArea.get(i).getX() - dArea.get(i).getW() / 2 > 1350) {
dArea.remove(i);
}
if (dArea.get(i).getX() + dArea.get(i).getW() / 2 < 0) {
dArea.remove(i);
}
if (dArea.get(i).getY() - dArea.get(i).getH() / 2 > 685) {
dArea.remove(i);
}
if (dArea.get(i).getY() + dArea.get(i).getH() / 2 < 0) {
dArea.remove(i);
}
}
}
}
任何想法为什么以及如何解决?
答案 0 :(得分:3)
尝试使用else if
代替if
。
否则循环中的一次迭代可能会删除多个元素(一次用于'w'检查,一次用于'h'检查)。