gpt4 book ai didi

JAVA 使用 .compareTo 对 vector 进行排序并填充另一个 vector

转载 作者:太空宇宙 更新时间:2023-11-04 09:47:08 25 4
gpt4 key购买 nike

我在对 vector 进行排序时遇到了一些麻烦,方法是比较找到最小值的元素并将其放入另一个 vector 中,该 vector 将使用两个周期进行排序,特别是我一直遇到 ArrayIndexOutOfBoundsException。

Vector<Figure> myList = new Vector<Figure>(); //this is the vector with all the unsorted geometric shapes
Vector<Figure> listordered = new Vector<Figure>(); //the vector where i want to put them sorted
Figure x = null;
int indice = 0;
System.out.println(myList.size());
do{
for(int i=0;i<myList.size();i++) {
x = myList.get(i);
if(x.compareTo(MIN) <0)
MIN=x;
indice = myList.indexOf(MIN);
}
listordered.add(MIN);
myList.removeElementAt(indice);
System.out.println(myList.size());
}while(myList.size()!=0);

System.out.println(listordered);

我的想法是用一个循环找到最小值,然后将其添加到排序 vector 中,并用另一个循环继续这样做,直到第一个 vector 中没有更多元素,并在每次找到新的最小元素时删除。但它不起作用。

最佳答案

问题是您的代码永远不会在外部 do - while 循环的迭代之间重置 MINindice。由于代码永远不会更新 MIN,第二次迭代会无意中重用 indice 的旧值,最终导致 removeElementAt 中出现索引越界异常。

解决此问题的一种方法是在进入 for 循环之前将 indice 设置为零,并将 MIN 设置为 myList.get(0)。事实上,您应该将 indiceMIN 声明移至 do - whole 循环内,因为这是它们的正确范围。

最后,您缺少 if 主体周围的大括号。这对功能没有影响,但会导致冗余处理。

注意:我假设您正在编写自己的排序作为学习练习。否则,您应该使用 Java 库函数或排序集合。

关于JAVA 使用 .compareTo 对 vector 进行排序并填充另一个 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55288574/

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