Java:已知某个班级有45人,统计每个学生的成绩,考试科目有:语文、英语、数学、物理、化学、生物,求取总分和平均分,并对学生成绩进行排序。
时间: 2024-05-11 15:18:36 浏览: 79
下面是一个 Java 代码示例,可以实现您的需求:
```java
import java.util.Arrays;
public class GradeAnalyzer {
public static void main(String[] args) {
// 定义成绩数组,每个数组元素表示一个学生的成绩
int[][] grades = new int[45][6];
// 随机生成每个学生的成绩
for (int i = 0; i < 45; i++) {
for (int j = 0; j < 6; j++) {
grades[i][j] = (int) (Math.random() * 101);
}
}
// 计算每个学生的总分和平均分
int[] totalScores = new int[45];
double[] averageScores = new double[45];
for (int i = 0; i < 45; i++) {
int totalScore = 0;
for (int j = 0; j < 6; j++) {
totalScore += grades[i][j];
}
totalScores[i] = totalScore;
averageScores[i] = totalScore / 6.0;
}
// 对学生成绩进行排序
int[] sortedIndexes = new int[45];
for (int i = 0; i < 45; i++) {
sortedIndexes[i] = i;
}
Arrays.sort(sortedIndexes, (a, b) -> totalScores[b] - totalScores[a]);
// 输出每个学生的成绩、总分、平均分和排名
System.out.println("排名\t语文\t英语\t数学\t物理\t化学\t生物\t总分\t平均分");
for (int i = 0; i < 45; i++) {
int index = sortedIndexes[i];
System.out.printf("%d\t", i + 1);
for (int j = 0; j < 6; j++) {
System.out.printf("%d\t", grades[index][j]);
}
System.out.printf("%d\t%.2f\n", totalScores[index], averageScores[index]);
}
}
}
```
以上代码中,我们首先定义了一个二维数组 `grades`,用于存储每个学生的成绩。然后我们使用随机数生成器给每个学生的成绩赋值。接着,我们使用两个一维数组 `totalScores` 和 `averageScores` 分别存储每个学生的总分和平均分,计算方式很简单,就是遍历 `grades` 数组,累加每个学生的成绩,然后除以科目数。最后,我们使用 `Arrays.sort` 方法对学生成绩进行排序,排序的依据是总分,排序结果保存在一个一维数组 `sortedIndexes` 中。最后,我们输出每个学生的成绩、总分、平均分和排名。
注意:以上代码仅供参考,实际应用中需要根据具体需求进行修改。
阅读全文