java实现成绩实现同分同排名,排名相同的话下一次不连续
时间: 2024-05-11 22:15:21 浏览: 44
回答:可以使用Collections.sort()方法进行排序,再利用循环遍历数组,设置排名,并处理同分同排名的情况。具体实现方法可以参考以下示例代码:
```
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static void main(String[] args) {
ArrayList<Student> students = new ArrayList<>();
students.add(new Student("Tom", 85));
students.add(new Student("Jerry", 90));
students.add(new Student("Alice", 85));
students.add(new Student("Bob", 80));
Collections.sort(students); // 按照成绩排序
int rank = 1;
int lastScore = -1; // 上一个学生的分数
for (int i = 0; i < students.size(); i++) {
Student student = students.get(i);
if (student.score == lastScore) { // 分数相同,排名也相同
student.rank = rank;
} else { // 分数不同,排名加1
student.rank = ++rank;
}
lastScore = student.score;
System.out.println(student.name + " 的成绩是:" + student.score + ",排名是:" + student.rank);
}
}
}
class Student implements Comparable<Student> {
String name;
int score;
int rank;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
@Override
public int compareTo(Student o) {
return o.score - this.score; // 降序排列
}
}
```
笑话:为什么Java程序员喜欢喝茶?因为Java看起来像茶杯。