Help with Java code for sorting GPA
我正在辅导一名高中生,她有一个 CS 作业,我不知道如何帮助她。
她应该"编写一种方法,该方法将接收一系列学生并返回 GPA 最高的学生。"
给定的代码状态
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public class Student {
private String myName ;
private double my GPA ;
public Student (String n, double gpa ) {
myName = n ;
myGPA = gpa ;
}
public String getName () {
return myName ;
}
public double getGPA () {
return myGPA ;
}
/* other methods not shown */
} |
我们知道他们在问什么,但我们不知道如何去做。我们说他们要求我们对人和他们的 GPA 进行分类,然后只返回 GPA 最高的学生。我们应该先排序,然后再提取吗?还有什么事吗?
- 因此没有理由对数组进行排序。只需遍历整个数组并跟踪发现哪个学生的 GPA 最高。
-
除了实现可比较之外,只需循环遍历整个数组列表并获得最大 GPA。根据数组列表的索引,返回数组列表元素。你在辅导一个学生,但你为什么不能做这样的问题?就是想。
一种方法是让 Student 实现 Comparable:
1 2 3 4 5 6 7
| public class Student implements Comparable <Student >{
...
int compareTo (Student s ){
return Double. valueOf(myGPA ). compareTo(s. getGPA())
}
...
} |
然后使用:
编辑:调整代码以使用原始双打,感谢@ThanksForAllTheFish 评论
- 这将是最简单、最优雅的方式。如果您无法修改学生类(无法使其实现 Comparable),那么您将不得不自己实现排序算法。谷歌冒泡排序或 Gnomesort。
-
@mish 不需要。 Collections.sort 有一个带有 java.util.Comparator 的第二个签名。如果不允许修改类 Student,OP 可以创建一个比较器
-
@Xipo 在 OP 问题 GPA 中是一个原语,因此您的代码已损坏(尽管理论上是正确的)。 Double.valueOf(myGPA).compareTo(s.getGPA()) 修复您的代码
-
@ThanksForAllTheFish 还没有想过这个。感谢您的投入。