java中 学生成绩表,r个同学有c门课程,求每位同学的总分,然后按总分对二维数组进行降序排列,代码怎么写
时间: 2024-10-14 20:02:29 浏览: 26
在Java中,你可以创建一个二维数组来表示学生成绩表,然后通过循环计算每个学生的总分,并将结果存储在一个新的数组或列表中。最后,你可以使用`Collections.sort()`或自定义排序算法(如冒泡排序、快速排序等)对总分进行降序排列。以下是一个简单的示例:
```java
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Collections;
class Student {
String name;
int[] scores; // 假设每门课的成绩都在一个int数组里
// 构造函数,初始化学生姓名和成绩
public Student(String name, int[] scores) {
this.name = name;
this.scores = scores.clone(); // 复制原始数组防止修改
}
// 计算总分
public int getTotalScore() {
int total = 0;
for (int score : scores) {
total += score;
}
return total;
}
}
// 定义二维数组模拟成绩表
int r = 5; // 同学数
int c = 4; // 课程数
Student[] students = new Student[r][];
for (int i = 0; i < r; i++) {
int[] scoresArray = new int[c]; // 每位同学的课程分数
// 初始化成绩...
students[i] = new Student("同学" + (i+1), scoresArray);
// 这里假设你已经有了实际的成绩数据
}
// 计算并存储每位同学的总分
ArrayList<Student> sortedStudents = new ArrayList<>();
for (Student student : students) {
int total = student.getTotalScore();
student.totalScore = total; // 添加到学生对象上便于后续操作
sortedStudents.add(student);
}
// 对总分进行降序排序
Collections.sort(sortedStudents, (a, b) -> b.getTotalScore() - a.getTotalScore());
// 打印排序后的学生信息
for (Student student : sortedStudents) {
System.out.println("学生:" + student.name + ", 总分:" + student.totalScore);
}
阅读全文