这个插入排序函数应该接受一个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;
}
}
答案 0 :(得分:1)
为什么不在Drink类中实现类似的界面?
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
答案 1 :(得分:1)
当count等于-1时,您正在尝试访问drink [1]的getcost方法。我相信如果您将“while count&gt; = -1”更改为“while count&gt; -1”,这将得到修复。
这显然需要进行少量重组,然后将饮料插入正确的地方。