3 回答
TA貢獻(xiàn)1946條經(jīng)驗 獲得超3個贊
你如何初始化'arr'變量?
無論如何,問題是當(dāng)您創(chuàng)建陣列時 - 您應(yīng)該指定初始容量。每次將元素添加到數(shù)組中時,都會增加它。當(dāng)您嘗試請求索引為 i 的數(shù)組單元格時,如果數(shù)組容量小于 I - 您將收到 arrayOutOfBoundsException。
TA貢獻(xiàn)1802條經(jīng)驗 獲得超5個贊
你的問題在這里:
if (arraySize == 0)
{
arr[0] = Item;
}
您正在將 Item 分配給數(shù)組中的第一個元素。但數(shù)組大小必須為空,如if (arraySize == 0)
所以你有兩個選擇:
調(diào)整數(shù)組的大小(通過創(chuàng)建一個新的)
或返回錯誤
TA貢獻(xiàn)1812條經(jīng)驗 獲得超5個贊
if (arraySize == 0)
{
arr[0] = Item;
}
如您所知,在計算機(jī)科學(xué)中,索引從 0 開始。這意味著 arr[0] 是數(shù)組的第一個槽。如果 arraySize 為 0,則沒有這樣的索引 arr[0]。您的代碼嘗試將 Item 插入到大小為零的數(shù)組中。這會導(dǎo)致 Index out of bound 異常。
順便說一句,如果是值的排序算法,則不需要“Key”變量。你可以刪除它。但如果需要,您應(yīng)該按元素的鍵值對元素進(jìn)行排序。
例如,如果我們有:
element 1 -> key= 101 , value= 6
element 2 -> key= 201 , value= 9
element 3 -> key= 301 , value= 2
您不應(yīng)將它們排序為 element 3 < element 1 < element 2 您應(yīng)該將它們排序為: element 1 < element 2 < element 3 以便它們的鍵值。
換句話說,如果你想按它們的值對它們進(jìn)行排序,將鍵值作為參數(shù)傳遞是沒有意義的。
添加回答
舉報
