gpt4 book ai didi

java - 功课帮助。我必须对 "write"进行排序我无法使用 API 排序

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:55:29 24 4
gpt4 key购买 nike

我必须编写一个从命令行获取参数的程序。有3个类(class)。主应用程序类,定义名人堂每个成员的类,然后是创建名人堂成员数组的名人堂类。 HallOFFameMember 类的属性是 firstName、lastName、yearInducted 和 sport。我必须在 HallOfFame 类中编写一个按入选年份排序的排序方法。我试图用可比较的实用程序来解决这个问题,但我认为那行不通。

这是作业中写排序的部分,所以我不能使用 Array.sort() 或类似的东西。

“还在 HallOfFame 类中定义一个名为 sortMembers 的方法,它返回一个 HallOfFameMember 对象数组,其中包含成员数组中的对象,按入职年份排序。注意:在 sortMembers 方法中完成的排序不应该使用 API 中的排序方法。您将编写自己的排序例程(例如,冒泡排序是可以接受的)。”

我不确定如何为数组中对象的属性编写排序。任何帮助指导我找到如何做到这一点的帮助将不胜感激。我发现的所有内容都指向使用我无法使用的 Array.sort 和 compareTo 方法。

** 编辑 **问题是有人可以指出我可以在哪里阅读或找到如何编写自己的排序以按对象数组中的属性排序的示例吗?我会研究使用 comparable 的建议,因为这是我最初倾向于的,只是无法让它发挥作用。

     public class HW3 {


public static void main(String[] args) throws Exception {

if (args.length % 4 != 0) {
throw new Exception(
"First Name, Last Name, Year Inducted, Sport not entered correctly");
}

HallOfFame hallOfFameList = new HallOfFame();
hallOfFameList.setNumberOfMembers(args.length / 4);

HallOfFameMember[] tempMembers = new HallOfFameMember[args.length / 4];


for (int i = 0; i < args.length; i += 4) {
tempMembers[i/4].setFirstName(args[i]);
tempMembers[i/4].setLastName(args[i+1]);
tempMembers[i/4].setYearInducted(Integer.parseInt(args[i+2]));
tempMembers[i/4].setSport(args[i+3]);
}

hallOfFameList.setMembers(tempMembers);
HallOfFameMember[] sortedMembers = null;
hallOfFameList.sortMembers(sortedMembers);
HallOfFame.printReport(sortedMembers);


}


}



public class HallOfFameMember {
private String firstName;
private String lastName;
private String sport;
private int yearInducted;

public String getFirstName() {
return firstName;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

public String getSport() {
return sport;
}

public void setSport(String sport) {
this.sport = sport;
}

public int getYearInducted() {
return yearInducted;
}

public void setYearInducted(int yearInducted) {
this.yearInducted = yearInducted;
}

}
public class HallOfFame {
private HallOfFameMember[] members;
private int numberOfMembers;

public HallOfFameMember[] getMembers() {
return members;
}

public void setMembers(HallOfFameMember[] members) {
this.members = members;
}

public int getNumberOfMembers() {
return numberOfMembers;
}

public void setNumberOfMembers(int numberOfMembers) {
this.numberOfMembers = numberOfMembers;
}

public void sortMembers(HallOfFameMember[] sortedMembers){


}

public static void printReport(HallOfFameMember[] print){
System.out.println("Java Sports Hall of Fame Inductees\n\n");
System.out.printf("%-30s\t%-30s\t%-30s\n","Name","Year Inducted","Sport");
for(int i = 0; i < print.length; i++)
System.out.printf("%-30s\t%-30s\t%-30s\n", print[i].getLastName()+","+print[i].getFirstName(), print[i].getYearInducted(), print[i].getSport());
}

}

最佳答案

为了进一步说明我在评论中所做的陈述:

由于这是家庭作业,我们大多数人都会限制我们的建议,但我们可以帮助您解释作业。我在说明中没有看到任何阻止您使用 Comparator<HallOfFameMember> 的内容或实现 Comparable<HallOfFameMember> ,事实上我会做一个或另一个。

但是您必须编写自己的排序方法,我会这样做并让它使用 Comparator 辅助类或 Comparable 接口(interface)来帮助进行排序。我会去维基百科,阅读排序算法并选择最简单的,也许是冒泡排序,因为你不会根据这项作业的速度评分,只是根据完成和正确完成它来评分。

关于java - 功课帮助。我必须对 "write"进行排序我无法使用 API 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7537006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com