java - 删除 ArrayList 元素时出现 IndexOutOfBoundsException

标签 java exception arraylist

我这里有这段代码(使用 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;
}

这是由循环调用的,它在循环中按顺序依次执行 get()rem() 。当我松开 ESC 时,这给了我一个很棒的 java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 at keys.remove(KEY_ESCAPE);

有人有什么见解可以分享吗?

最佳答案

KEY_ESCAPE 的值是多少?

它可能是值为 1 的 int,因此您无需删除具有该值的对象,而是删除位置 1 处的对象,而该对象显然不存在。

关于java - 删除 ArrayList 元素时出现 IndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16549021/

相关文章:

java - 计算类(class)平均分

java - 如何以编程方式重定向到异常错误页面?

c# - 您可以从 Application.DoEvents() 内部捕获异常吗?

java - 向 TableViewer 添加数据时出现异常

java - 将属性文件加载到 java.util.Properties?

java - 在这个 RecyclerView 点击监听器中这个接口(interface)是干什么的?

java - 如何通过多个线程成功访问和循环ArrayList?

java - 人物提取挑战

java - 如何在 Java 中获取 Integer arrayList 的组合集合

java - 使用 eclipse 远程调试 jnlp 应用程序