У меня есть ученик класса - 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 John 16 5 Сэм 17 6 Руни
выход: (независимо от того, как я играть с логикой или даже комментировать его)
17 6 Rooney
16 5 Sam
15 6 John
В чем может быть проблема?
Вы должны показать данный результат и желаемого результата, а также логику вы использовали. –
Вы пытались использовать контрольные точки или вставлять утверждения печати в свой метод компаратора, чтобы узнать, что происходит? – ide
Покажите нам код, который вы действительно используете. Вместо 'Array.Sort' правильное имя метода сортировки -' Arrays.sort'. Вам также не хватает точки с запятой в конце этого утверждения. И вы должны, вероятно, позволить 'StudentComparator' реализовать' Comparator '. Это упрощает ваш код. И никогда не делайте случайных вещей в компараторе. Это запрещено спецификацией метода «Comparator.compare». Подробнее читайте в документации. –