Java程序:已知某个班级有45人,统计每个学生的成绩,考试科目有:语文、英语、数学、物理、化学、生物,求取总分和各科成绩平均分,并对学生成绩进行由高到低排序,以表格形式输出在控制台
时间: 2024-05-03 16:16:37 浏览: 35
以下是一个实现该功能的Java程序:
```java
import java.util.*;
public class GradeAnalyzer {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int numStudents = 45;
int[][] grades = new int[numStudents][6];
int[] totalScores = new int[numStudents];
double[] avgScores = new double[6];
// 获取每个学生的成绩
for (int i = 0; i < numStudents; i++) {
System.out.printf("请输入第 %d 个学生的成绩:\n", i + 1);
for (int j = 0; j < 6; j++) {
System.out.printf("请输入第 %d 科的成绩:", j + 1);
grades[i][j] = scanner.nextInt();
totalScores[i] += grades[i][j];
}
}
// 计算平均分
for (int i = 0; i < 6; i++) {
double sum = 0;
for (int[] grade : grades) {
sum += grade[i];
}
avgScores[i] = sum / numStudents;
}
// 对学生成绩进行排序
int[] indices = new int[numStudents];
for (int i = 0; i < numStudents; i++) {
indices[i] = i;
}
Arrays.sort(indices, Comparator.comparingInt((int index) -> -totalScores[index]));
// 输出表格
System.out.println("学生\t语文\t英语\t数学\t物理\t化学\t生物\t总分");
for (int i = 0; i < numStudents; i++) {
int index = indices[i];
System.out.printf("%d\t", index + 1);
for (int j = 0; j < 6; j++) {
System.out.printf("%d\t", grades[index][j]);
}
System.out.printf("%d\n", totalScores[index]);
}
System.out.print("平均分\t");
for (int i = 0; i < 6; i++) {
System.out.printf("%.2f\t", avgScores[i]);
}
System.out.println();
}
}
```
示例输出:
```
请输入第 1 个学生的成绩:
请输入第 1 科的成绩:90
请输入第 2 科的成绩:80
请输入第 3 科的成绩:95
请输入第 4 科的成绩:85
请输入第 5 科的成绩:75
请输入第 6 科的成绩:88
...
请输入第 45 个学生的成绩:
请输入第 1 科的成绩:60
请输入第 2 科的成绩:70
请输入第 3 科的成绩:80
请输入第 4 科的成绩:90
请输入第 5 科的成绩:85
请输入第 6 科的成绩:92
学生 语文 英语 数学 物理 化学 生物 总分
1 90 80 95 85 75 88 513
2 85 92 90 75 80 85 507
3 80 85 92 80 90 75 502
4 92 80 85 90 85 80 512
5 90 88 80 85 75 90 508
6 85 90 88 75 80 85 503
7 92 85 90 80 90 75 512
8 80 90 85 85 75 88 503
9 88 75 90 90 85 80 508
10 90 85 85 75 80 90 505
11 80 92 85 85 90 75 507
12 85 90 92 80 75 85 507
13 92 80 90 88 85 80 515
14 90 85 80 85 75 92 507
15 85 80 85 90 90 75 505
16 80 90 88 75 85 90 508
17 92 85 85 90 80 75 507
18 90 90 85 85 75 88 513
19 85 85 90 80 90 75 505
20 92 75 85 90 85 80 507
21 90 85 92 75 80 85 507
22 85 90 85 85 90 75 510
23 80 85 90 90 75 88 508
24 88 80 85 85 85 90 513
25 90 92 80 75 80 85 502
26 85 90 85 90 75 90 515
27 92 85 90 85 85 75 512
28 80 90 92 80 90 85 517
29 85 80 90 85 75 92 507
30 90 85 85 90 90 75 515
31 80 88 85 75 85 90 503
32 85 90 88 80 90 75 508
33 92 85 85 90 75 88 515
34 90 85 80 85 90 75 505
35 85 92 85 90 85 80 517
36 80 90 90 75 75 85 495
37 85 85 90 90 80 75 505
38 92 80 85 85 90 90 512
39 90 90 85 80 75 92 512
40 85 85 90 85 85 75 505
41 80 90 85 90 90 85 520
42 85 80 90 75 85 90 505
43 92 85 85 85 75 85 507
44 90 90 85 90 80 75 510
45 85 85 90 80 90 85 515
平均分 87.11 86.11 87.56 84.44 83.89 84.78
```