怎么录入n个学生的名字,学号,m(m<6)科成绩。1.同时计算出每门学科和每位同学的平均成绩,2.分别按照总成绩和学号由大到小排列 注:1.用java编写 2.只学到了继承,希望用之前的知识点写3.能不能多写点注释,我主要想了解思路4.能否用最简单的方法,特别是录入数据的方法思路,怎样才能让后面的操作简单点
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学生人数:");
int n = scanner.nextInt();
System.out.println("请输入科目数:");
int m = scanner.nextInt();
// 记录每个学生的名字、学号和各科成绩
String[] names = new String[n];
String[] numbers = new String[n];
double[][] scores = new double[n][m];
// 录入学生信息和成绩
for (int i = 0; i < n; i++) {
System.out.println("请输入第" + (i+1) + "个学生的名字:");
names[i] = scanner.next();
System.out.println("请输入第" + (i+1) + "个学生的学号:");
numbers[i] = scanner.next();
for (int j = 0; j < m; j++) {
System.out.println("请输入第" + (i+1) + "个学生的第" + (j+1) + "门成绩:");
scores[i][j] = scanner.nextDouble();
}
}
// 计算每门学科的平均成绩
double[] subjectAverages = new double[m];
for (int i = 0; i < m; i++) {
double sum = 0;
for (int j = 0; j < n; j++) {
sum += scores[j][i];
}
subjectAverages[i] = sum / n;
System.out.println("第" + (i+1) + "门学科的平均成绩为:" + subjectAverages[i]);
}
// 计算每位同学的平均成绩和总成绩
Student[] students = new Student[n];
for (int i = 0; i < n; i++) {
double sum = 0;
for (int j = 0; j < m; j++) {
sum += scores[i][j];
}
double average = sum / m;
students[i] = new Student(names[i], numbers[i], scores[i], average, sum);
System.out.println(students[i]);
}
// 按照总成绩由大到小排序
Arrays.sort(students, new Comparator<Student>() {
public int compare(Student s1, Student s2) {
if (s1.getTotalScore() > s2.getTotalScore()) {
return -1;
} else if (s1.getTotalScore() < s2.getTotalScore()) {
return 1;
} else {
return 0;
}
}
});
System.out.println("按照总成绩由大到小排列的结果如下:");
for (Student student : students) {
System.out.println(student);
}
// 按照学号由大到小排序
Arrays.sort(students, new Comparator<Student>() {
public int compare(Student s1, Student s2) {
return s2.getNumber().compareTo(s1.getNumber());
}
});
System.out.println("按照学号由大到小排列的结果如下:");
for (Student student : students) {
System.out.println(student);
}
}
}
class Student {
private String name; // 姓名
private String number; // 学号
private double[] scores; // 成绩
private double averageScore; // 平均成绩
private double totalScore; // 总成绩
public Student(String name, String number, double[] scores, double averageScore, double totalScore) {
this.name = name;
this.number = number;
this.scores = scores;
this.averageScore = averageScore;
this.totalScore = totalScore;
}
public String getName() {
return name;
}
public String getNumber() {
return number;
}
public double[] getScores() {
return scores;
}
public double getAverageScore() {
return averageScore;
}
public double getTotalScore() {
return totalScore;
}
public String toString() {
return "姓名:" + name + " 学号:" + number + " 平均成绩:" + averageScore + " 总成绩:" + totalScore;
}
}
用不到什么继承,定义一个学生类,包含姓名、学号、成绩数组即可
然后再定义一个学生对象的数组
录入就是循环