我正在尝试使用数组列表制作插入排序程序,但其中的某些内容出现错误。
每当我尝试运行我的程序时,它都会说:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 5, Size: 5 at java.util.ArrayList.rangeCheck(ArrayList.java:635) at java.util.ArrayList.get(ArrayList.java:411) at NewInsertionSort.main(NewInsertionSort.java:20)
但我不明白我在哪里称其为“越界”。
接下来,它说我的局部变量“k”的值从未被使用过,但它应该......
如果有人能帮助我,那就太好了,谢谢您的支持。
这是我的代码:
import java.util.ArrayList;
public class NewInsertionSort {
public static void main(String[] args) {
ArrayList <Integer> InsertionSort = new ArrayList <Integer>();
InsertionSort.add(1);
InsertionSort.add(52);
InsertionSort.add(21);
InsertionSort.add(45);
InsertionSort.add(27);
Integer a;
Integer lock;
Integer c;
for (c = 1; c < InsertionSort.size(); c++);{
lock = InsertionSort.get(c);
System.out.println(lock);
for (a = c - 1; (a >= 0) && (InsertionSort.get(a) < lock); a--){
Integer k = InsertionSort.get(a+1);
Integer h = InsertionSort.get(a);
k = h;
}
lock = InsertionSort.get(a+1);
}
for(int z=0;z < InsertionSort.size(); z++){
System.out.println(InsertionSort.get(z));
}
}
}
最佳答案
for (c = 1; c < InsertionSort.size(); c++) --> ; <-- {
lock = InsertionSort.get(c);
System.out.println(lock);
问题是你有一个“;”在 for 循环的结束 ')' 后面。这也是它告诉您变量 k 未被使用的原因。
根据评论更新:
GET 方法仅返回“a”位置下的值。所以你的“k”和“h”变量只是数字。它们不指向任何地方。如果您想将“a”的值分配给“a+1”的值,您必须执行以下操作:
insertionSort.set(a+1, h);
关于java - ArrayList插入排序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34965235/