Привет, я пытаюсь пропустить арраист, но получаю сообщение об ошибке. Поэтому мой очень конкретный вопрос: где я делаю что-то неправильно?Java, Looping через ArrayList
Сообщение об ошибке:
Исключение в потоке "главный" java.util.ConcurrentModificationException в java.util.ArrayList $ Itr.checkForComodification (ArrayList.java:901) в java.util. ArrayList $ Itr.next (ArrayList.java:851) в main.numberOfNeighbours (main.java:130) в main.calculateNextGen (main.java:95) в main.main (main.java:30)
Код:
public static int numberOfNeighbours(boolean[][] arena, int x, int y){
//Calculates a given cells number of neighbours.
int height = arena[0].length;
int width = arena.length;
ArrayList<int[]> cors = new ArrayList<int[]>();
for(int i = -1; i < 2; i++){
for(int e = -1; e < 2; e++){
int[] xy = {x+i, y+e};
cors.add(xy);
}
}
//This is where I get the error
for(int[] xy : cors){
//Exclude cors that are out of range or the cell itself.
if(xy[0] == -1 || xy[1] == -1 || xy[0] == width || xy[0] == height || (xy[0] == x && xy[1] == y)){
int index = cors.indexOf(xy);
cors.remove(index);
}
}
int neighbours = 0;
for(int[] xy : cors){
if(arena[xy[0]][xy[1]]){
neighbours++;
}
}
return neighbours;
}
Я не прибегая к помощи, но может найти решение. Я думаю, что моя основная проблема заключается в том, что я не понимаю сообщение об ошибке, поэтому любая помощь, объясняющая это, была бы замечательной.
Не изменяйте содержимое при его повторении. это хорошо известно, что вызывают проблемы. – Stultuske
@Stultuske Вы должны опубликовать это как ответ. Нет сомнений в том, что это вызвано «удалением» в iterand цикла for-each. –
Это очень хороший момент, теперь я чувствую себя довольно глупо, но очень благодарен –