我有這個代碼在這裏(使用lwjgl,但應該是沒有爭議的)嘗試按Esc鍵時暫停遊戲。我使用帶有鍵的ArrayList來跟蹤什麼是按下的,哪些不是。IndexOutOfBoundsException當刪除ArrayList元素
public List<Integer> keys = new ArrayList<Integer>();
public void get() {
if (isKeyDown(KEY_ESCAPE) && !keys.contains(KEY_ESCAPE)) {
keys.add(KEY_ESCAPE);
keyEscape();
}
}
public void rem() {
if (!isKeyDown(KEY_ESCAPE) && keys.contains(KEY_ESCAPE))
keys.remove(KEY_ESCAPE);
}
private void keyEscape() {
Screen.paused ^= true;
}
這是由循環,這確實陸續在環get()
和rem()
一個右,依次調用。當我放開ESC時,這給了我一個極好的java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
在keys.remove(KEY_ESCAPE);
。
任何人都有任何見解分享?
爲什麼不使用'boolean'標誌而不必每次檢查'ArrayList'?似乎不必要的昂貴。 – Quetzalcoatl 2013-05-14 17:14:19
考慮爲您的鍵值使用'enum'而不是'Integer'值 – 2013-05-14 17:17:17
相關但不是重複http://stackoverflow.com/questions/34643366/java-arraylist-remove-object-indexoutofboundsexception – Raedwald 2016-01-07 08:03:43