求一道java题的答案,尽量详细点
定义一个表示学生的类(student)。student类包括学生的学号,姓名,年龄,性别 和 3门课程成绩的信息数据及用来获得和设置学号,姓名,年龄,性别和 3门课程成绩的方法。
创建 textstudent 类中生成10学生对象。计算3门课程的平均成绩,以及某门课程的最高分和最低分。
------解决方案--------------------
package test.stu;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TextStudent {
private static int[] 科目表 = { 1, 2, 3 };
private List<Student> 学生列表;
public TextStudent() {
this.学生列表 = new ArrayList<Student>();
Student s;
Map<Integer, Double> map;
for (int i = 1; i <= 10; i++) {
s = new Student();
s.set学号("北大" + i);
s.set姓名("姓名" + i);
s.set年龄(20);
s.set性别(i % 2);
map = new HashMap<Integer, Double>();
for (int 科目 : 科目表) {
map.put(科目, 80 + i + 科目 + .1);
}
s.set成绩(map);
学生列表.add(s);
}
}
public double get平均成绩(int 科目) {
double 总成绩 = 0;
for (Student s : 学生列表) {
总成绩 += s.get成绩().get(科目);
}
return 总成绩 / 学生列表.size();
}
public double get最高成绩(int 科目) {
double 最高成绩 = 0;
double 成绩=0;
for (Student s : 学生列表) {
成绩=s.get成绩().get(科目);
if(最高成绩<成绩) {
最高成绩 = 成绩;
}
}
return 最高成绩;
}
public double get最低成绩(int 科目) {
double 最低成绩 = 0;
double 成绩=0;
for (Student s : 学生列表) {
成绩=s.get成绩().get(科目);
if(最低成绩>成绩) {
最低成绩 = 成绩;
}
}
return 最低成绩;
}
public static void main(String[] args) {
TextStudent ts = new TextStudent();
for (Student s : ts.学生列表) {
System.out.printf("%s=%2.1f\n", s.get学号(), s.get平均成绩());
}
for (int 科目 : 科目表) {
System.out.printf("%s平均成绩2.1f\n",科目,ts.get平均成绩(科目));
System.out.printf("%s最高成绩=2.1f\n",科目,ts.get最高成绩(科目));
System.out.printf("%s最低成绩=2.1f\n",科目,ts.get最低成绩(科目));
}
}
}
class Student {
private String 学号;
private String 姓名;
private int 年龄;
private int 性别; // 1=男,0=女
private Map<Integer, Double> 成绩;
public double get平均成绩() {
if (成绩.size() == 0) {
return 0;
}
double 平均成绩 = 0;
for (double d : 成绩.values()) {
平均成绩 += d;
}
return 平均成绩 / 成绩.size();
}
public String get学号() {
return 学号;
}
public void set学号(String 学号) {
this.学号 = 学号;
}
public String get姓名() {
return 姓名;
}
public void set姓名(String 姓名) {
this.姓名 = 姓名;
}
public int get年龄() {
return 年龄;
}
public void set年龄(int 年龄) {
this.年龄 = 年龄;
}
public int get性别() {
return 性别;
}
public void set性别(int 性别) {
this.性别 = 性别;
}
public Map<Integer, Double> get成绩() {
return 成绩;
}
public void set成绩(Map<Integer, Double> 成绩) {
this.成绩 = 成绩;
}
}