gpt4 book ai didi

java 在我的代码上抛出 java.util.ConcurrentModificationException

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

我正在制作一个射击游戏作为一个项目,敌方物体向 Actor 随机射击。但每次敌人随机射击时,都会抛出 java.util.ConcurrentModificationException。这是随机射击的代码

public void enemyAttackStrategy() {

// Fire at when at around the 1/4, 1/2 and 3/4 in a random direction
int width = Gui.getInstance().getWidth();
int firstPoint = width / 4 ;
int secondPoint = firstPoint * 2;
int thirdPoint = firstPoint * 3;

int dist = 2;

boolean nearFirst = (getX() - firstPoint) < 3 && (getX() - firstPoint > 0) ;
boolean nearSecond = (getX() - secondPoint) < 3 && (getX() - secondPoint > 0) ;
boolean nearThird = (getX() - thirdPoint) < 3 && (getX() - thirdPoint > 0);

if(nearFirst || nearSecond || nearThird){

//System.out.println("near!!!!!!!!" + (firstPoint) + " " + (secondPoint) + " " + (thirdPoint));
Game.getInstance().enemyShot();
}

以及创建敌人子弹的代码

public void enemyShot() {
Bullet bullet = new Bullet("EnemyBullet", "Bullet.png", 14);
bullets.add(bullet);
int minSpeed = -15;
int xPosition = enemyShip.getX();
int yPosition = enemyShip.getY();
int xSpeed = random.nextInt(30) + minSpeed;
int ySpeed = random.nextInt(30) + minSpeed;

addToWorld(bullet, xPosition, yPosition, xSpeed, ySpeed, 2);

//System.out.println("Added Enemy Bullet");
}

这是我引用的 for 循环

public void timer() {


for (Tame oneTame : tames) {
tame.timeTick();//}
}

这就是错误

java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:886)
at java.util.ArrayList$Itr.next(ArrayList.java:836)
at GameFrameworkJavaFX.Game.timeTick(Game.java:135)

最佳答案

如果有两个线程都修改相同的代码,则可能会发生 ConcurrentModificationException。如果您有一个 foreach 循环修改数组的内容,通常会导致这种情况。请参阅this question有关该特定问题的更多详细信息。我不知道这是否是导致问题的原因,但就像 @alfasin 评论的那样,如果没有看到调用这些方法的代码,我们就无法回答这个问题。

编辑:看到您新发布的代码,看起来很可能是这种情况。再次,只需查看 this question ,因为这似乎是其他人遇到的完全相同类型的错误。

关于java 在我的代码上抛出 java.util.ConcurrentModificationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28932175/

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