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] 删除。
我来说两句