gpt4 book ai didi

java - 处理 IntList.remove() 抛出 ArrayIndexOutOfBounds : 10 exception

转载 作者:行者123 更新时间:2023-12-01 12:20:15 24 4
gpt4 key购买 nike

我正在尝试在处理中制作一个小型射击游戏,当我单击鼠标按钮时,我会创建一些在屏幕上移动的子弹,当它们离开屏幕时它们应该消失,我使用 IntList 我保留这样的值:(X1, Y1, X2, Y2, ...),我的问题是,在下面的代码中我尝试删除以下索引即使我在删除之前检查了 IntList 的大小,我也会随机收到 ArrayIndexOutOfBounds: 10 异常。有什么帮助吗?

    for(i = 1; i < shots.size(); i += 2){
shots.sub(i, bullet_speed);
if(shots.get(i) + bullet_height <= border_size){
shots.remove(i); //Problematic point
println("Removed Y-pos, array's size: "+shots.size());
shots.remove(i - 1);
println("Removed X-pos, array's size: "+shots.size());
i -= 2;
continue;
}
rect(shots.get(i - 1), shots.get(i), bullet_width, bullet_height);
}

编辑:
我想我找到了一个线索:当我的屏幕上有 5 颗子弹时(此时,子弹的大小变成了 10 颗),总是会出现异常。

最佳答案

更改:

for(i = 1; i < shots.size(); i += 2){

致:

for(i = 0; i < shots.size(); i += 2){

列表的索引从 0 开始,而不是 1。由于每次都加 2,所以它超出了 i < shots.size() 的范围。在 for 循环和你的 if-statement ,因为它只检查值 + 1,而不检查值 + 2。

关于java - 处理 IntList.remove() 抛出 ArrayIndexOutOfBounds : 10 exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26715648/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com