过去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);
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是compareTo()方法,它位于Drinks类中
public int compareTo(Drinks z)
{
int res=0;
if (quantity < z.quantity) {res=-1; }
if (quantity > z.quantity){res=1;}
return res;
}
Run Code Online (Sandbox Code Playgroud)
现在我好累,我准备好放弃它.任何帮助,将不胜感激 .先感谢您.
尝试改变
list.add(i,list.get(i+1) );
Run Code Online (Sandbox Code Playgroud)
至
list.set(i,list.get(i+1) );
Run Code Online (Sandbox Code Playgroud)
和
for (int i=0; i < list.size()-i; i++)
Run Code Online (Sandbox Code Playgroud)
至
for (int i=0; i < list.size() - x - 1; i++)
Run Code Online (Sandbox Code Playgroud)