0
我有一個問題,重新創建Java的PriorityQueue
類的插入或添加方法。PriorityQueue插入方法
有幾個規定:
主要原因之一是,我不能從
java.util.*
包括ArrayList
使用任何。我知道隊列必須按照某種優先順序排序,在這種情況下,我會對錢進行排序。 ,我插入到隊列中的項目看起來像這樣
Penny,1971,4 Nickel,2002,9 Five,1980,2 etc....
所以,當我走在substring(0, 3)
下面的代碼我真的只是把這個詞的前3個字母,因爲我想有PriorityQueue
根據字母順序對項目進行排序,所以Dime, Nickel, Penny, Quarter etc.
我使用插入排序算法中的一些代碼對進入隊列的項進行排序。
的問題是,它正確地插入的第一個項目到隊列中,但我得到的
ArrayIndexOutOfBoundsException: 25
上線
array[x] = array[x - 1];
數組元素的長度爲25 ...
我在做什麼錯了?有什麼我可以做得更好嗎?我難住這個問題....
任何幫助將不勝感激!
@Override
public void insert(Money item) {
int x;
if(numElems == 0) {
array[numElems++] = item; //if its the first item simply insert it no need to worry about sorting
} else {
x = numElems;
while(x > 0 && item.toString().compareToIgnoreCase(array[x - 1].toString().substring(0, 3)) > 0) {
array[x] = array[x - 1];
x--;
}
array[x] = item;
numElems++;
}
}
是的,我相信我添加的元素在,因爲時Queue位置24插入從後面,並從(位置0)這是爲什麼我認爲遞減x(x--;)將起作用,因爲我在位置24添加元素,然後添加位置23等元素......但它不爲我工作 –
'numElems',24或0的初始值是什麼? – Chara
numElems的初始值在被構造函數調用時被設置爲0! –