1 import java.util.Scanner;
2 public class Student{
3 public static void main(String[] args){
4 Scanner in=new Scanner(System.in);
5 System.out.println("请输入学生的人数");
6 int studentsNum=in.nextInt();
7 System.out.println("请输入课程数目");
8 int coursesNum=in.nextInt();
9 //声明数组存储课程
10 String[] courses=new String[coursesNum];
11 //声明数组存储姓名
12 String[] names=new String[studentsNum];
13 //声明二维数组存储特定成绩
14 double[][] scores=new double[studentsNum][coursesNum];
15 //声明数组存储总分
16 double[] sum=new double[studentsNum];
17 //声明数组存储平均分
18 double[] avg=new double[studentsNum];
19 //声明数组存储一行
20 String[] str=new String[studentsNum];
21
22 //循环给课程数组赋值
23 for(int i=0;i<courses.length;i++){
24 System.out.println("请输入第"+(i+1)+"门课程是什么");
25 courses[i]=in.next();
26 }
27
28 //循环给姓名数组和成绩赋值
29 for(int i=0;i<names.length;i++){
30 System.out.println("请输入第"+(i+1)+"个学生的姓名:");
31 names[i]=in.next();
32 double s=0;
33 String str1="";
34 for(int j=0;j<courses.length;j++){
35 System.out.println("请输入"+names[i]+courses[j]+"的成绩:");
36 scores[i][j]=in.nextDouble();
37 s=s+scores[i][j];
38 str1=str1+scores[i][j]+"\t";
39 }
40 sum[i]=s;
41 avg[i]=s/coursesNum;
42 str[i]=names[i]+"\t"+str1+sum[i]+"\t"+avg[i]+"\t";
43 }
44
45 //按照表格形式输出
46 System.out.print("学生\t");
47 for(int i=0;i<courses.length;i++){
48 System.out.print(courses[i]+"\t");
49 }
50 System.out.print("总分\t平均分\t排行榜\t");
51 System.out.println();
52
53 for(int i=0;i<sum.length-1;i++){
54 for(int j=0;j<sum.length-1;j++){
55 if(sum[j]<sum[j+1]){
56 double temp=sum[j];//叫总分高的排在前面
57 sum[j]=sum[j+1];
58 sum[j+1]=temp;
59
60 String temp2=str[j];//将整行交换
61 str[j]=str[j+1];
62 str[j+1]=temp2;
63 }
64
65 }
66 }
67
68 for(int i=0;i<names.length;i++){
69 //System.out.print(names[i]+"\t");
70 //for(int j=0;j<courses.length;j++){
71 //System.out.print(scores[i][j]+"\t");
72 //}
73 //System.out.print(sum[i]+"\t"+avg[i]+"\t");
74 System.out.print(str[i]);
75 System.out.print("第"+(i+1)+"名");
76 System.out.println();
77 }
78 }
79 }