3 回答
TA贡献1946条经验 获得超3个赞
你如何初始化'arr'变量?
无论如何,问题是当您创建阵列时 - 您应该指定初始容量。每次将元素添加到数组中时,都会增加它。当您尝试请求索引为 i 的数组单元格时,如果数组容量小于 I - 您将收到 arrayOutOfBoundsException。
TA贡献1802条经验 获得超5个赞
你的问题在这里:
if (arraySize == 0)
{
arr[0] = Item;
}
您正在将 Item 分配给数组中的第一个元素。但数组大小必须为空,如if (arraySize == 0)
所以你有两个选择:
调整数组的大小(通过创建一个新的)
或返回错误
TA贡献1812条经验 获得超5个赞
if (arraySize == 0)
{
arr[0] = Item;
}
如您所知,在计算机科学中,索引从 0 开始。这意味着 arr[0] 是数组的第一个槽。如果 arraySize 为 0,则没有这样的索引 arr[0]。您的代码尝试将 Item 插入到大小为零的数组中。这会导致 Index out of bound 异常。
顺便说一句,如果是值的排序算法,则不需要“Key”变量。你可以删除它。但如果需要,您应该按元素的键值对元素进行排序。
例如,如果我们有:
element 1 -> key= 101 , value= 6
element 2 -> key= 201 , value= 9
element 3 -> key= 301 , value= 2
您不应将它们排序为 element 3 < element 1 < element 2 您应该将它们排序为: element 1 < element 2 < element 3 以便它们的键值。
换句话说,如果你想按它们的值对它们进行排序,将键值作为参数传递是没有意义的。
添加回答
举报