录人班级学生的各科成绩,计算每名学生的总分、平均分,并按总分降序排序。用java编写。
时间: 2024-09-20 18:06:07 浏览: 112
在Java中,你可以创建一个`Student`类来表示学生的信息,包括各科成绩。然后定义一个`ScoreSheet`类来管理整个班级的数据,包括计算总分、平均分以及排序。以下是一个简单的示例:
```java
import java.util.*;
class Student {
String name;
Map<String, Integer> scores; // 使用Map存储各科成绩,如"语文":85, "数学":90
// 构造函数和getter/setter省略
public int getTotalScore() {
int total = 0;
for (int score : scores.values()) {
total += score;
}
return total;
}
public double getAverageScore() {
if (scores.isEmpty()) {
return 0;
}
return (double) getTotalScore() / scores.size();
}
}
class ScoreSheet {
List<Student> students;
void addStudent(Student student) {
students.add(student);
}
List<Student> sortStudentsByTotalScoreDesc() {
Collections.sort(students, new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
return s2.getTotalScore() - s1.getTotalScore(); // 降序排列
}
});
return students;
}
// 主程序入口
public static void main(String[] args) {
ScoreSheet sheet = new ScoreSheet();
sheet.addStudent(new Student("张三", Map.of("语文", 85, "数学", 90)));
sheet.addStudent(new Student("李四", Map.of("语文", 95, "数学", 92)));
List<Student> sortedStudents = sheet.sortStudentsByTotalScoreDesc();
for (Student student : sortedStudents) {
System.out.println("学生:" + student.name);
System.out.println("总分:" + student.getTotalScore());
System.out.println("平均分:" + student.getAverageScore());
System.out.println("------------------------");
}
}
}
```
在这个例子中,首先创建学生对象并添加到`ScoreSheet`的列表中,然后通过`sortStudentsByTotalScoreDesc()`方法对所有学生按照总分降序排序,并打印每个学生的名称、总分和平均分。
阅读全文