插入排序函数
Insertion Sort Function
这个插入排序函数应该接受一组 Drink 对象,并根据它们的一个属性(成本)对它们进行排序。此 属性 由 getCost() 获取。我不断收到 NullPointer 错误。代码如下:
public void sortDrinks(Drink[] drinks){
for(int i = 1; i <= drinks.length; i++){
Drink key = drinks[i];
int count = i-1;
while((count >= -1)&&(drinks[count].getCost() > key.getCost())){
drinks[count+1] = drinks[count];
count--;
}
drinks[count+1] = key;
}
}
为什么不在您的 Drink class 中实现类似的接口?
public class Drink implements Comparable<Drink> {
// attributes and constructor
public int getCost() {
return cost;
}
public int compareTo(Drink other) {
return getCost().compareTo(other.getCost());
}
}
稍后您可以对传递的 Drink 对象数组进行排序:
Collections.sort(drinks); // returns the sorted drinks
当count等于-1时,您正在尝试访问drinks[-1]的getcost方法。我相信如果您将 "while count >= -1" 更改为 "while count > -1".
,这将得到解决
这显然需要进行少量重组,然后才能将饮料插入正确的位置。
这个插入排序函数应该接受一组 Drink 对象,并根据它们的一个属性(成本)对它们进行排序。此 属性 由 getCost() 获取。我不断收到 NullPointer 错误。代码如下:
public void sortDrinks(Drink[] drinks){
for(int i = 1; i <= drinks.length; i++){
Drink key = drinks[i];
int count = i-1;
while((count >= -1)&&(drinks[count].getCost() > key.getCost())){
drinks[count+1] = drinks[count];
count--;
}
drinks[count+1] = key;
}
}
为什么不在您的 Drink class 中实现类似的接口?
public class Drink implements Comparable<Drink> {
// attributes and constructor
public int getCost() {
return cost;
}
public int compareTo(Drink other) {
return getCost().compareTo(other.getCost());
}
}
稍后您可以对传递的 Drink 对象数组进行排序:
Collections.sort(drinks); // returns the sorted drinks
当count等于-1时,您正在尝试访问drinks[-1]的getcost方法。我相信如果您将 "while count >= -1" 更改为 "while count > -1".
,这将得到解决这显然需要进行少量重组,然后才能将饮料插入正确的位置。