我必須編寫一個程序,它從命令行接受它的參數。有三類。主要的應用程序類,定義名人堂的每個成員的類,然後是名人堂的一個名人堂,它創建了一系列名人堂成員。 HallOFFameMember類的屬性是firstName,lastName,yearInducted和sport。我必須在HallOfFame類中編寫排序方法,根據引導年份排序。我試圖用類似的工具來解決它,但我認爲這不會起作用。家庭作業幫助。我必須「寫」排序我不能使用API排序
下面是說寫入排序的任務的一部分,所以我不能使用Array.sort()或類似的東西。
「在HallOfFame類中定義一個名爲sortMembers的方法,它返回一個HallOfFameMember對象的數組,該對象包含成員數組中的對象,並按歸納年進行排序注意:sortMembers方法中的排序應該不要使用API中的排序方法,你應該編寫自己的排序程序(冒泡排序,例如,可以接受)。「
我不確定如何去編寫數組中對象屬性的排序。任何幫助指導我到哪裏我可以找出如何做到這一點將不勝感激。我發現的一切都指向使用Array.sort和compareTo方法,我無法使用它。
**編輯**問題是有人可以指向我可以閱讀的地方,或找到如何編寫我自己的排序的例子,以通過對象數組中的屬性進行排序?不好意思看看使用可比較的建議,因爲這是我最初傾向於使用的,只是無法完成它的工作。
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());
}
}
問題是什麼? – quasiverse
你可以使用CompareTo,或者更好的比較器,但是你必須使用你自己的排序方法。我會在不同的排序算法上檢查維基百科,然後用最簡單的方式實現,或許是Bubble Sort。我會使用Comparable或Comparator,然後在我的排序方法中調用它們的方法(compareTo或分別比較)。 –
另外:投票,因爲你表明這是家庭作業,你不是要求直接的答案,而是解釋任務的建議。 –