期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。
任务:先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前5名学生的学号和总分。
样例输入
8
80 89 89
88 98 78
90 67 80
87 66 91
78 89 91
88 99 77
67 89 64
78 89 98
样例输出
8 265
2 264
6 264
1 258
5 258应该怎样求前5名?
任务:先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前5名学生的学号和总分。
样例输入
8
80 89 89
88 98 78
90 67 80
87 66 91
78 89 91
88 99 77
67 89 64
78 89 98
样例输出
8 265
2 264
6 264
1 258
5 258应该怎样求前5名?
解决方案 »
- winword.exe 无法释放
- 这句代码问题出在什么地方?
- 请问一下JAVA中如何获得基本型数据的类型?
- java JDK源码疑问?100分开来检啊!
- 我想自己写一个类,然后调用他的方法,怎么办,我自己的类需要重新再写到另一个文件里么???
- 键盘绑定的问题
- swing编程问题:如何让JMenuBar下的JMenuItem被选中后变灰,不能再选,或者是使用其它类?
- JTextArea的行列限制问题!!
- 请大大侠详细解释一下override和overload的概念,以及多态的概念
- 谢谢大家给我回贴!先的贴都加了分了!这又有一个!!
- 求助:Jacob调用OCX的出现“灾难性故障”
- 一段Java图形编程的程序,有错不知道哪里有问题。
int sno;
float chinese;
float math;
float english;
float sum; public Student() {
} public Student(int sno, float _chinese, float _math, float _english) {
this.sno = sno;
this.chinese = _chinese;
this.math = _math;
this.english = _english;
this.sum = _chinese + _math + _english;
} @Override
public int compareTo(Student o) {
if(this.sum > o.sum) {
return 1;
} else if(this.sum == o.sum) {
if(this.chinese > o.chinese) {
return 1;
} else if(this.chinese == o.chinese) {
if(this.sno > o.sno) {
return 1;
} else {
return -1;
}
} else {
return -1;
}
} else {
return -1;
}
} @Override
public String toString() {
return "Student [sno=" + sno + ", chinese=" + chinese + ", math="
+ math + ", english=" + english + ", sum=" + sum + "]";
}
}
可以使用下面代码测试:
List<Student> students = new ArrayList<Student>();
Collections.sort(students);
for(Student stu : students.subList(0, 5)) {
System.out.println(stu);
}
compareTo方法不是很懂,能解释下吗