forLoop中的Java ArrayList超出范围

西蒙·舒尔茨(Simon Schulz)
for(int i1 = schuss.size()-1; i1 >= 0; i1--){
    for(int i2 = (monster.size()-1) ; i2 >= 0; i2--){
        if(monster.get(i2).getBounding().intersects(schuss.get(i1).getBounding())){
            monster.get(i2).life--;
            if(monster.get(i2).life <= 0){
                    monster.remove(i2);
            }
            schuss.remove(i1);
        }
    }
}

我总是得到一个异常,我不明白为什么?

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 19, Size: 19
at java.util.LinkedList.entry(LinkedList.java:365)
at java.util.LinkedList.get(LinkedList.java:315)
at Defender_Pack.GameFrame.update(GameFrame.java:139)
at Defender_Pack.MainMethod.main(MainMethod.java:27)

我如何才能在不超出范围的情况下遍历所有对象,为什么我得到一个却是因为我以为我只要求绑定索引呢?

雷姆·拉斯

问题应该在于:

schuss.remove(i1);

实际上,第i1个元素尚未删除就被删除:下一个“怪物”内部循环可能会尝试访问它。

该解决方案取决于您的代码目标,但是添加了一个

break;

在上述说明之后,可能会有所帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

forLoop中的Java ArrayList超出范围

来自分类Dev

Java整数超出范围

来自分类Dev

Java:从文本文件导入ArrayList-超出范围错误

来自分类Dev

android自定义列表视图适配器中的ArrayList索引超出范围异常

来自分类Dev

Java数组索引超出范围4

来自分类Dev

java数组索引超出范围

来自分类Dev

Java处理数组索引超出范围

来自分类Dev

数组索引超出范围-Java

来自分类Dev

(Java)数组超出范围异常

来自分类Dev

Java数组索引超出范围

来自分类Dev

Java数组索引超出范围错误

来自分类Dev

java-数组索引超出范围

来自分类Dev

字符串超出范围-Java

来自分类Dev

Java - 数组索引超出范围 - 向量?

来自分类Dev

Swift中ArraySlice索引超出范围

来自分类Dev

MATLAB中的索引超出范围错误

来自分类Dev

Android中的索引超出范围异常

来自分类Dev

R中的下标超出范围错误

来自分类Dev

微调器中的索引超出范围

来自分类Dev

列表中的索引超出范围

来自分类Dev

在Python中获取索引超出范围

来自分类Dev

VBA中的绘图箭头超出范围

来自分类Dev

在Matlab中抛出“超出范围”

来自分类Dev

代码中的下标超出范围错误

来自分类Dev

数学函数中的索引超出范围

来自分类Dev

R中的下标超出范围错误

来自分类Dev

在python中调用超出范围的线程

来自分类Dev

比较C ++中的常量超出范围

来自分类Dev

Swift中的数组索引超出范围