我有一個班學生 - int age,int height和name;數組排序比較方法總是進行默認比較
我有n個學生課程的對象,我嘗試按年齡排序,如果有領帶,那麼按高度排序,如果有領帶隨機名稱。
我有一個類
class StudentComparator implements Comparator{
public int compare(Object 1, Object2)
{
// Logic
}
}
我有一個主類
class StudentSorter {
// Initialise student objects etc
// Have an array of students: students[]
Array.Sort(students,new StudentComparator())
// print values
}
我面臨的問題是,輸出不類似我在StudentComparator類的比較方法的邏輯。 邏輯是:
if(Student1.age > student2.age)
{
return 1;
}
else if(Student1.age < student2.age)
{
return -1;
}
else
{
if(Student1.height > Student2.height)
return 1;
else if(Student1.height < Student2.height)
return -1;
else
return 0;
}
輸入: 15 6約翰 16 5薩姆 17 6魯尼
輸出:(不管我如何用邏輯玩耍,甚至評論吧)
17 6 Rooney
16 5 Sam
15 6 John
可能是什麼問題?
你應該表現出給定的結果和通緝的結果,以及你所使用的邏輯。 – 2010-10-09 22:43:07
您是否嘗試在比較器方法中使用斷點或插入打印語句來查看發生了什麼? – ide 2010-10-09 22:44:32
向我們展示您真正使用的代碼。而不是'Array.Sort',排序方法的正確名稱是'Arrays.sort'。你在這個語句的最後還缺少一個分號。你也許應該讓'StudentComparator'實現'Comparator'。這使您的代碼更容易。並且不要在比較器中做任何隨機事情。這是'Comparator.compare'方法的規範所禁止的。詳細信息請閱讀文檔。 –
2010-10-09 22:48:51