所以这是我的蛇游戏代码的功能。基本上我最初做的是通过LinkedList<Point>
这是蛇,但因为它抛出异常,我认为使用迭代器更改它会有所帮助。
显然不是。
我怎样才能解决这个问题?
public void drawSnake(Graphics g) {
g.setColor(Color.green);
Iterator<Point> iterator = snake.iterator();
while(iterator.hasNext()){
Point p =iterator.next();
g.fillRect(p.x * BOX_WIDTH, p.y * BOX_HEIGHT, BOX_WIDTH, BOX_HEIGHT);
}
g.setColor(Color.black);
}
答案 0 :(得分:2)
通常,在迭代迭代时修改集合时会发生此异常。
很可能这意味着snake
正在另一个线程中被修改。这个代码是独立考虑的,不应该抛出CME,因此这是唯一可能的解释。
尝试查找snake
变量的所有用法,并分析它们是否可以与您发布的代码一起完成。
另一个非常非常不同的可能性是g.fillRect()
方法从p
集合中删除snake
。例如,如果您覆盖了该方法,则可以实现这一点。