gpt4 book ai didi

java - 使用变量副本时索引超出范围

转载 作者:行者123 更新时间:2023-12-01 11:35:51 25 4
gpt4 key购买 nike

我无法理解这个问题,所以我希望你们能很好地解释为什么这段代码不起作用。

我有一个ArrayListPoint在我的里面Warehouse类(class)。

这段代码工作正常(它位于 Warehouse 之外的另一个类中):

Point lastPoint = new Point(0, 0);
ArrayList<Point> localPackages = this.warehouse.getPackages();

while(true){
if(localPackages.size() > 0){
lastPoint = this.determineClosest(lastPoint, localPackages);
routeTemp.add(lastPoint);
localPackages.remove(localPackages.indexOf(lastPoint));

}else{
break;
}
}

但是Warehouse里面的包类因被删除而消失。因此,我尝试制作该变量的副本并在本地使用它,但我对此并不满意。

ArrayList<Point> localPackages = new ArrayList<>(this.warehouse.getPackages());

这是我收到的错误:

Exception in thread "AWT-EventQueue-0" 
java.lang.ArrayIndexOutOfBoundsException: -1

我在这一行收到错误:

localPackages.remove(localPackages.indexOf(lastPoint));

这是 localPackages 的打印件变量:

[
java.awt.Point[x=1,y=1],
java.awt.Point[x=1,y=4],
java.awt.Point[x=2,y=0],
java.awt.Point[x=4,y=3],
java.awt.Point[x=0,y=1],
java.awt.Point[x=0,y=4],
java.awt.Point[x=1,y=0],
java.awt.Point[x=4,y=2]
]

那么为什么我会得到 ArrayIndexOutOfBoundsException当我复制变量时,而不是当我使用原始变量时?

最佳答案

有可能 defineClosest 使用的是原始数组,而不是传入的副本。

关于java - 使用变量副本时索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30002921/

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