有如下Student 对象,
private String name;
private int age;
private int score;
private String classNum;
其中,classNum 表示学生的班号,例如“class05”。 有如下List
List list = new ArrayList();
list.add(new Student(“Tom”, 18, 100, “class05”));
list.add(new Student(“Jerry”, 22, 70, “class04”));
list.add(new Student(“Owen”, 25, 90, “class05”));
list.add(new Student(“Jim”, 30,80 , “class05”));
list.add(new Student(“Steve”, 28, 66, “class06”));
list.add(new Student(“Kevin”, 24, 100, “class04”));
在这个list 的基础上,完成下列要求:
1) 计算所有学生的平均年龄
2) 计算各个班级的平均分
主类:
1 importjava.util.ArrayList;2
3 public classTestDay17_1_2 {4
5 public static voidmain(String[] args) {6 ArrayList al = new ArrayList<>();7
8 al.add(new TestDay17_1_2_Student("Tom", 18, 100, "class05"));9 al.add(new TestDay17_1_2_Student("Jerry", 22, 70, "class04"));10 al.add(new TestDay17_1_2_Student("Owen", 25, 90, "class05"));11 al.add(new TestDay17_1_2_Student("Jim", 30, 80, "class05"));12 al.add(new TestDay17_1_2_Student("Steve", 28, 66, "class06"));13 al.add(new TestDay17_1_2_Student("Kevin", 24, 100, "class04"));14
15 //计算平均年龄16 //定义总年龄及人数变量
17 int sumAge = 0;18 int count = 0;19 //遍历集合 总年龄累加、人数自增
20 for(TestDay17_1_2_Student s : al) {21 sumAge +=s.getAge();22 count++;23 }24 //计算并输出平均年龄
25 double averageAge = (sumAge * 1.0) /count;26 System.out.println("平均年龄是:" +averageAge);27
28 //计算各班级平均分29 //创建储存计算分数的集合
30 ArrayList alscore = new ArrayList<>();31 //遍历班级唯一插入成绩对象
32
33 for (int i = 0; i < al.size(); i++) {34 //过去当前学生对象
35 TestDay17_1_2_Student student =al.get(i);36 boolean flag = false;//标记没有重复班级名称
37 for (int j = 0; j < alscore.size(); j++) {38 //获取当前班级成绩对象
39 TestDay17_1_2_Score score =alscore.get(j);40 //判断班级名称是否重复
41 if(student.getClassNum().equals(score.getClassName())) {42 //重复标记设为真
43 flag = true;44 //修改当前成绩对象中分数和人数信息并跳出内循环
45 score.setStudentNum(score.getStudentNum()+1);46 score.setSumScore(score.getSumScore() +student.getScore());47 break;48 }49 }50
51 //判断flag如果为假(没有重复)则添加一个新的成绩对象
52 if (!flag) {53 alscore.add(new TestDay17_1_2_Score(student.getClassNum(),1,student.getScore()));54 }55 }56 for(TestDay17_1_2_Score score : alscore) {57 System.out.println(score.toString());58 }59 }60 }
学生类:
1 public classTestDay17_1_2_Student {2
3 privateString name;4 private intage;5 private intscore;6 privateString classNum;7 publicTestDay17_1_2_Student() {8 super();9 //TODO Auto-generated constructor stub
10 }11 public TestDay17_1_2_Student(String name, int age, intscore, String classNum) {12 super();13 this.name =name;14 this.age =age;15 this.score =score;16 this.classNum =classNum;17 }18 publicString getName() {19 returnname;20 }21 public voidsetName(String name) {22 this.name =name;23 }24 public intgetAge() {25 returnage;26 }27 public void setAge(intage) {28 this.age =age;29 }30 public intgetScore() {31 returnscore;32 }33 public void setScore(intscore) {34 this.score =score;35 }36 publicString getClassNum() {37 returnclassNum;38 }39 public voidsetClassNum(String classNum) {40 this.classNum =classNum;41 }42 }
成绩类:
1 public classTestDay17_1_2_Score {2
3 privateString className;4 private intstudentNum;5 private intsumScore;6
7 publicTestDay17_1_2_Score() {8 super();9 //TODO Auto-generated constructor stub
10 }11 public TestDay17_1_2_Score(String className, int studentNum, intsumScore) {12 super();13 this.className =className;14 this.studentNum =studentNum;15 this.sumScore =sumScore;16 }17 publicString getClassName() {18 returnclassName;19 }20 public voidsetClassName(String className) {21 this.className =className;22 }23 public intgetStudentNum() {24 returnstudentNum;25 }26 public void setStudentNum(intstudentNum) {27 this.studentNum =studentNum;28 }29 public intgetSumScore() {30 returnsumScore;31 }32 public void setSumScore(intsumScore) {33 this.sumScore =sumScore;34 }35
36 public doublegetAverageScore() {37 return (this.sumScore * 1.0) / this.studentNum;38 }39
40 @Override41 publicString toString() {42 double averageScore = this.getAverageScore();43 String className = this.getClassName();44 int studentNum = this.getStudentNum();45 int sumScore = this.getSumScore();46 return
47 (newStringBuffer()).append(className)48 .append("班级有").append(studentNum)49 .append("个同学,总分:").append(sumScore)50 .append(",平均分:").append(averageScore).toString()51 ;52 }53 }