Я хочу реализовать метод атаки, который работает следующим образом: каждый воин из моих войск атакует воина, выбранного случайным образом из другого отряда. Если атакуемый воин умирает, он должен быть удален из войска. С методом, который я пытался я получаю сообщение об ошибке для случайного числа:Удаление во время итерации проблем в java
java.lang.IllegalArgumentException: n must be positive
Войск является списком <Creature>
воинов; Я думаю, что я не делаю удаление правильно, потому что иначе я не должен иметь эту ошибку.
public void atac(Troop opponentTroop){
for(Creature f : warriors){
Creature c = getOpponent(opponentTroop);
f.atac(c);
ListIterator<Creature> iterator = opponentTroop.warriors.listIterator();
while(iterator.hasNext()){
c = iterator.next();
if(c.isDead()){
iterator.remove();
}
}
}
}
private Creature getOpponent(Troop opponent){
int x = rand.getRandomArrayIndex(opponent.warriors.size());
return opponent.warriors.get(x);
}
Можете ли вы дать нам сама строка, в которой выбрано исключение (см. Stacktrace)? – Fildor
Где вызывается «IllegalArgumentException»? Я не признаю его стандартным сообщением об ошибке Java, поэтому его может бросить какая-то другая часть вашего приложения Проблема может быть не итерацией, а логикой вообще –