有如下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 import java.util.ArrayList; 2 3 public class TestDay17_1_2 { 4 5 public static void main(String[] args) { 6 ArrayList<TestDay17_1_2_Student> 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<TestDay17_1_2_Score> 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 class TestDay17_1_2_Student { 2 3 private String name; 4 private int age; 5 private int score; 6 private String classNum; 7 public TestDay17_1_2_Student() { 8 super(); 9 // TODO Auto-generated constructor stub 10 } 11 public TestDay17_1_2_Student(String name, int age, int score, String classNum) { 12 super(); 13 this.name = name; 14 this.age = age; 15 this.score = score; 16 this.classNum = classNum; 17 } 18 public String getName() { 19 return name; 20 } 21 public void setName(String name) { 22 this.name = name; 23 } 24 public int getAge() { 25 return age; 26 } 27 public void setAge(int age) { 28 this.age = age; 29 } 30 public int getScore() { 31 return score; 32 } 33 public void setScore(int score) { 34 this.score = score; 35 } 36 public String getClassNum() { 37 return classNum; 38 } 39 public void setClassNum(String classNum) { 40 this.classNum = classNum; 41 } 42 }
成績類:
1 public class TestDay17_1_2_Score { 2 3 private String className; 4 private int studentNum; 5 private int sumScore; 6 7 public TestDay17_1_2_Score() { 8 super(); 9 // TODO Auto-generated constructor stub 10 } 11 public TestDay17_1_2_Score(String className, int studentNum, int sumScore) { 12 super(); 13 this.className = className; 14 this.studentNum = studentNum; 15 this.sumScore = sumScore; 16 } 17 public String getClassName() { 18 return className; 19 } 20 public void setClassName(String className) { 21 this.className = className; 22 } 23 public int getStudentNum() { 24 return studentNum; 25 } 26 public void setStudentNum(int studentNum) { 27 this.studentNum = studentNum; 28 } 29 public int getSumScore() { 30 return sumScore; 31 } 32 public void setSumScore(int sumScore) { 33 this.sumScore = sumScore; 34 } 35 36 public double getAverageScore() { 37 return (this.sumScore * 1.0) / this.studentNum; 38 } 39 40 @Override 41 public String toString() { 42 double averageScore = this.getAverageScore(); 43 String className = this.getClassName(); 44 int studentNum = this.getStudentNum(); 45 int sumScore = this.getSumScore(); 46 return 47 (new StringBuffer()).append(className) 48 .append("班級有").append(studentNum) 49 .append("個同學,總分:").append(sumScore) 50 .append(",平均分:").append(averageScore).toString() 51 ; 52 } 53 }