0
嗨我想循環arraylist,但得到一個錯誤消息。所以我非常具體的問題是,我在哪裏做錯了什麼?Java,通過ArrayList循環
錯誤消息:
在java.util.ArrayList中$ Itr.checkForComodification(ArrayList.java:901) 在java.util中異常在線程 「主」 java.util.ConcurrentModificationException 。 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;
}
我一直在使用Google,但無法找到一個解決方案。我認爲我的主要問題是我不明白錯誤信息,所以任何幫助解釋這一點都會很好。
不要在迭代它時更改內容。這是衆所周知的問題。 – Stultuske
@Stultuske您應該將其作爲答案發布。毫無疑問,這是由for-each循環的iterand上的'remove'造成的。 –
這是一個很好的觀點,現在我覺得很愚蠢,但非常感謝 –