过去5个小时我一直在研究这个问题。由于某种原因,我没有得到我正在寻找的结果。该方法应该使用冒泡排序按数量对项目的Arraylist进行排序。不确定我是否犯了错误,但它似乎只对前几个项目进行排序,并且只列出其余部分,而不是按顺序排列。 这是代码
public static void bubblesrt(ArrayList<Drinks> list)
{
Drink temp;
if (list.size()>1) // check if the number of orders is larger than 1
{
for (int x=0; x<list.size(); x++) // bubble sort outer loop
{
for (int i=0; i < list.size()-i; i++) {
if (list.get(i).compareTo(list.get(i+1)) > 0)
{
temp = list.get(i);
list.set(i,list.get(i+1) );
list.set(i+1, temp);
}
}
}
}
}
这是compareTo()方法,它位于Drinks类
中 public int compareTo(Drinks z)
{
int res=0;
if (quantity < z.quantity) {res=-1; }
if (quantity > z.quantity){res=1;}
return res;
}
现在我好累,我准备好放弃它。任何帮助,将不胜感激 。先感谢您。
答案 0 :(得分:6)
尝试更改
list.add(i,list.get(i+1) );
到
list.set(i,list.get(i+1) );
和
for (int i=0; i < list.size()-i; i++)
到
for (int i=0; i < list.size() - x - 1; i++)
答案 1 :(得分:1)
你有这一行:
list.add(i,list.get(i+1) )
应该是:
list.set(i,list.get(i+1) )