【发布时间】:2021-06-17 09:07:33
【问题描述】:
我对 Java 还是很陌生,这是我第一次使用 Stack Overflow,请多多包涵。
我正在用一组对象制作一个程序,在这个例子中,我正在制作一组甜点。每个甜点都有一个随机生成的整数“等级”。我们必须做的程序的一部分是对对象数组进行排序,而不使用 Array 类中包含的排序方法。我查找了一个如何使用整数对基本数组进行排序的典型示例,并尝试将其合并到我的代码中的甜品排序方法中。当我运行它时,数组不会改变......
import java.util.Random;
public class Desserts {
public static void main(String[] args) {
DessertTerms[] yum;
yum = new DessertTerms[5];
Random random = new Random();
yum[0] = new DessertTerms("Chocolate cupcakes",random.nextInt(100));
yum[1] = new DessertTerms("Vanilla blondies",random.nextInt(100));
yum[2] = new DessertTerms("blackberry cobbler",random.nextInt(100));
yum[3] = new DessertTerms("apple pie",random.nextInt(100));
yum[4] = new DessertTerms("glazed donuts",random.nextInt(100));
for (int i = 0; i < yum.length; i++) {
System.out.println(yum[i].getName() + " " + yum[i].getRank());
}
dessertSort(yum);
}
public static void dessertSort(DessertTerms[] goods) {
for (int j = 1; j > goods.length; j++) {
DessertTerms current = goods[j];
int i = j - 1;
while ((i > 1) && (goods[i].getRank() > current.getRank())) {
goods[i + 1] = goods[i];
i--;
}
goods[i + 1] = current;
}
System.out.println("\nSorted stuff....");
for (int i = 0; i < goods.length; i++) {
System.out.println((i+1) + " " + goods[i].getName() + " " + goods[i].getRank());
}
}
}
DessertTerms 类:
public class DessertTerms {
private String name = "xxxxx"; //default name for dessert
private int rank = 0; //default rank
DessertTerms(){
}
public DessertTerms(String name, int rank) {
this.name = name;
this.rank = rank;
}
public String getName() {
return name;
}
public void setName(String newName) {
this.name = newName;
}
public int getRank(){
return rank;
}
public void setRank(int newRank){
this.rank = newRank;
}
@Override
public String toString() {
return this.name + " " + this.rank;
}
}
这是输出:
Before sort......
Chocolate cupcakes 82
Vanilla blondies 60
blackberry cobbler 3
apple pie 91
glazed donuts 91
After sort....
Chocolate cupcakes 82
Vanilla blondies 60
blackberry cobbler 3
apple pie 91
glazed donuts 91
我可以看出我做错了,但我不知道是什么。
【问题讨论】:
-
您被要求实现自己的排序算法。在线复制代码或让 StackOverflow 上的人为您解决这个问题不会帮助您学习。
-
无论你的排序实现是否正确,使用
j > goods.length的循环条件不会完成太多工作! -
在
dessertSort内,你的外循环有一个错误的结束条件。改为j < goods.length。 -
你的
while循环也不会运行,它会用货物[i]覆盖所有货物。最好检查一个排序算法并尝试实现它。
标签: java arrays sorting object