我在这里有这个代码(使用lwjgl但是应该没有意义)尝试在按下esc键时暂停游戏.我使用带有键的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;
}
Run Code Online (Sandbox Code Playgroud)
这是由循环,这不叫get()和rem()之后另一个一环,在这个顺序.这给了我一个真棒java.lang.IndexOutOfBoundsException: Index: 1, Size: 1的keys.remove(KEY_ESCAPE);时候我放手ESC的.
有谁有分享的见解?
如果你的问题是我java.lang.ArrayIndexOutOfBoundsException在我的代码中得到了一个,我不明白为什么会发生这种情况.它是什么意思,我该如何避免它?
这是关于这个主题的最全面的Canonical信息集合
java.lang.ArrayIndexOutOfBoundsException以及java.lang.IndexOutOfBoundsException.
有很多像这样的问题,所有这些都有模糊的没有代码答案,或者大多数都非常具体,并且局限于手头的问题,并没有解决在所有情况下完全相同的根本原因.
如果您看到属于此一般情况的一个,而不是使用更多重复的专门内容回答它,请将其标记为此副本的副本.