我正在嘗試使用arraylist進行插入排序程序,但我在其中的某些內容上發生錯誤。ArrayList InsertionSort問題
每當我試着運行我的程序,它說:
異常線程 「main」 java.lang.IndexOutOfBoundsException:指數: 5,大小:5在java.util.ArrayList.rangeCheck(ArrayList的的.java:635)在 java.util.ArrayList.get(ArrayList.java:411)在 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));
}
}
}
謝謝,我不知道我怎麼沒看出來,但它仍然說ķISN」用過嗎? –
是啊,因爲沒有使用k。您將h的值賦予變量k,但是......之後不使用它。所以這是毫無意義的。我甚至不明白你爲什麼分配給k然後分配給h,然後你把h分配給k ...你可以刪除h變量並分配InsertionSort.get(a);直接給k。但即使如此,你必須在代碼中的某個地方使用它。 – Natrezim
我試圖把a的值賦給a + 1的值,所以我得到這兩個值並且用它們作變量,然後設置這些變量相等。 –