gpt4 book ai didi

java - 删除对象时 ArrayList 中的索引越界异常

转载 作者:行者123 更新时间:2023-12-02 00:09:19 24 4
gpt4 key购买 nike

平台:JCreator

我通常使用从后开始计数的 for 循环,因为理论上删除它们时应该会很好地折叠:

0123456789

删除偶数:

i = 9: 0123456789
i = 8 //remove 8: 012345679
i = 7: 012345679
i = 6 //remove 6: 01234579

等等

但是当对象被删除时我得到这个异常:

线程“AWT-EventQueue-0”中出现异常 java.lang.IndexOutOfBoundsException:索引:3,大小: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);
}
}
}
}

有什么想法以及如何解决吗?

最佳答案

尝试使用else if而不是if

否则循环中的一次迭代可能会删除多个元素(一次用于“w”检查,一次用于“h”检查)。

关于java - 删除对象时 ArrayList 中的索引越界异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13183051/

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