为了账号安全,请及时绑定邮箱和手机立即绑定

libgdx中的arraylist出现错误

libgdx中的arraylist出现错误

繁华开满天机 2021-04-09 14:11:16
for (Rectangle block:getBlock()) {for (Rectangle done:getDone()){    if (block.y == done.y + 40) {        dones.add(block);        blocks.remove(block);        create();    }}所以我试图在arraylists“ blocks”和“ dones”中的每个矩形获取位置y,但是我真的不知道当我运行这段代码时会发生什么,直到它变为if (block.y == done.y + 40)现实,并且我得到了这个Exception:Exception in thread "LWJGL Application" java.util.ConcurrentModificationExceptionps在create方法中,将Rectangle添加到块arraylist中
查看完整描述

1 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

使用增强的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

        }

    }

}


查看完整回答
反对 回复 2021-04-21
  • 1 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信