这是我的子弹班级
package mainPackage;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
public class Bullets {
private double x;
private double y;
private BufferedImage bulletImage;
Bullets(double x, double y){
this.x = x;
this.y = y;
ImageLoader loader = new ImageLoader();
SpriteSheet ss = new SpriteSheet(loader.loadImage("/Pics/TheSpriteSheet.png"));
bulletImage = ss.grabImage(2, 1, 32, 32);
}
public void render(Graphics g){
g.drawImage(bulletImage, (int)x, (int)y, null);
}
public void tick(){
y--;
}
public double getX(){
return x;
}
public double getY(){
return y;
}
}
然后我完成了我的BulletQualities课程
package mainPackage;
import java.awt.Graphics;
import java.util.LinkedList;
public class BulletQualities {
Bullets b;
private LinkedList<Bullets> bulletList = new LinkedList<Bullets>();
public void addBullet(Bullets b){
bulletList.add(b);
}
public void tick(){
我在下一行收到错误
for(Bullets bullet:bulletList){
if(bullet.getY() == 0)
removeBullet(bullet);
bullet.tick();
}
}
public void render(Graphics g){
for(int x = 0;x < bulletList.size(); x++){
bulletList.get(x).render(g);
}
}
public void removeBullet(Bullets bullet){
bulletList.remove(bullet);
}
}
这是我的错误消息:
Exception in thread "Thread-4" java.util.ConcurrentModificationException
at java.util.LinkedList$ListItr.checkForComodification(Unknown Source)
at java.util.LinkedList$ListItr.next(Unknown Source)
然后它只是显示有错误的行。 我不知道为什么它不起作用。请帮我。这意味着很多。 : - )
哦,我差点忘了,这是我的bulletQualities类中的removeBullet方法:
public void removeBullet(Bullets bullet){
bulletList.remove(bullet);
}
答案 0 :(得分:0)
由于在迭代列表时删除了一个元素,你得到了这个例外。
for(Bullets bullet:bulletList){
if(bullet.getY() == 0)
removeBullet(bullet); // removing an element during iteration.
bullet.tick();
}
`
答案 1 :(得分:0)
当您迭代它时,您正在更改集合,因此也是例外。
请注意,Java8具有new removeIf方法。