gpt4 book ai didi

java - libgdx 中的 arraylist 出现错误

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

for (Rectangle block:getBlock()) {
for (Rectangle done:getDone()){

if (block.y == done.y + 40) {

dones.add(block);
blocks.remove(block);
create();

}}

所以我试图为数组列表“ block ”和“完成”中的每个矩形获取位置 y,但我真的不知道当我运行此代码时会发生什么,它就像它一样工作,直到 if (block.y == done.y + 40) 这成真了,我得到了这个异常:

Exception in thread "LWJGL Application" java.util.ConcurrentModificationException

附:在创建方法中,我将矩形添加到 block 数组列表中

最佳答案

使用增强的 for 循环,您可以在内部使用 List 对象的迭代器。

在迭代基础列表时不允许修改它。这称为 ConcurrentModificationException,就是您现在遇到的情况。

使用标准的 for 循环,并确保在删除元素时正确移动索引以获得所需的功能,如下所示:

ArrayList<Rectangle> blocks = getBlock();
ArrayList<Rectangle> done = getDone();

outer: for(int i = 0; i < blocks.size(); ++i)
{
for(int j = 0; j < done.size(); ++j)
{
if(blocks.get(i).y == done.get(j).y + 40)
{
done.add(blocks.get(i));
blocks.remove(i);
--i; // Make sure you handle the change in index.
create();
continue outer; // Ugly solution, consider moving the logic of the inner for into an own method
}
}
}

关于java - libgdx 中的 arraylist 出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50987809/

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