超级复杂 java 成绩排名
时间: 2023-10-14 17:15:53 浏览: 40
以下是一个超级复杂的 Java 成绩排名程序:
```java
import java.util.*;
public class ScoreRanking {
public static void main(String[] args) {
// 初始化学生信息
Student[] students = new Student[5];
students[0] = new Student("张三", 80, 90, 70);
students[1] = new Student("李四", 90, 70, 80);
students[2] = new Student("王五", 70, 80, 90);
students[3] = new Student("赵六", 85, 75, 82);
students[4] = new Student("刘七", 95, 85, 92);
// 计算每个学生的总分和平均分
for (int i = 0; i < students.length; i++) {
students[i].computeTotalScore();
students[i].computeAverageScore();
}
// 按照总分排序
Arrays.sort(students, new Comparator<Student>() {
public int compare(Student s1, Student s2) {
return s2.getTotalScore() - s1.getTotalScore();
}
});
// 输出排名结果
System.out.println("排名\t姓名\t语文\t数学\t英语\t总分\t平均分");
for (int i = 0; i < students.length; i++) {
System.out.println((i + 1) + "\t" + students[i].getName() + "\t" +
students[i].getChineseScore() + "\t" +
students[i].getMathScore() + "\t" +
students[i].getEnglishScore() + "\t" +
students[i].getTotalScore() + "\t" +
students[i].getAverageScore());
}
}
}
class Student {
private String name;
private int chineseScore;
private int mathScore;
private int englishScore;
private int totalScore;
private double averageScore;
public Student(String name, int chineseScore, int mathScore, int englishScore) {
this.name = name;
this.chineseScore = chineseScore;
this.mathScore = mathScore;
this.englishScore = englishScore;
}
public void computeTotalScore() {
this.totalScore = chineseScore + mathScore + englishScore;
}
public void computeAverageScore() {
this.averageScore = totalScore / 3.0;
}
public String getName() {
return name;
}
public int getChineseScore() {
return chineseScore;
}
public int getMathScore() {
return mathScore;
}
public int getEnglishScore() {
return englishScore;
}
public int getTotalScore() {
return totalScore;
}
public double getAverageScore() {
return averageScore;
}
}
```
这个程序定义了一个 `Student` 类来表示学生,包括姓名和语文、数学、英语三门成绩。它还定义了两个方法 `computeTotalScore` 和 `computeAverageScore` 来计算总分和平均分。
在 `ScoreRanking` 类的 `main` 方法中,我们首先初始化了五个学生的信息,然后计算每个学生的总分和平均分。接着,我们使用 `Arrays.sort` 方法按照总分排序,最后输出排名结果。
值得注意的是,我们使用了一个匿名内部类来定义排序规则,这个内部类实现了 `Comparator` 接口的 `compare` 方法,用于比较两个学生的总分大小。