计算指定班级的学生的平均成绩
标签(空格分隔): Java算法
问题
计算指定班级的学生的平均成绩
思路
利用OOP思想+Map求解
实现过程
1.构建一个类存储班级信息
package student;
/**
* Created by Administrator on 2017/7/28.
*/
public class Student{
private String classNum;
private Double score;
public Student(String classNum, double score){
this.classNum = classNum;
this.score = score;
}
public String getClassNum() {
return classNum;
}
public void setClassNum(String classNum) {
this.classNum = classNum;
}
public Double getScore() {
return score;
}
public void setScore(Double score) {
this.score = score;
}
@Override
public String toString() {
return "Student{" +
"classNum='" + classNum + '\'' +
", score=" + score +
'}';
}
}
2.成绩计算工具类
package student;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by Administrator on 2017/7/28.
*/
public class ScoreCalculateUtil {
private static Map<String, List<Student>> stus = new HashMap<>();
/**
* 传入学生集合
* @param stus
*/
public static void setStudents(List<Student> stus){
for(Student s: stus){
addStudent(s);
}
}
/**
* 计算班级的平均分
* @param classNum 班级号
* @return 平均分
*/
public static double getAvg(String classNum){
if(stus.containsKey(classNum)){
double sum = 0.0;
List<Student> ss = stus.get(classNum);
for(Student s : ss){
sum += s.getScore();
}
return sum/ss.size();
}
return 0.0;
}
/**
* 添加学生到Map集合
* @param s 学生记录
*/
private static void addStudent(Student s){
String classNum = s.getClassNum();
if(stus.containsKey(classNum)){
List<Student> list = stus.get(classNum);
list.add(s);
}else{
List<Student> list = new ArrayList<Student>();
list.add(s);
stus.put(classNum, list);
}
}
}
3.工具测试类
package student;
import org.junit.Test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by Administrator on 2017/3/17.
*/
public class StudentScoreTest {
@Test
public void test(){
Student s = new Student("1", 50);
Student s1 = new Student("2", 90);
Student s2 = new Student("1", 99);
Student s3 = new Student("1", 66);
Student s4 = new Student("1", 80);
Student s5 = new Student("3", 75);
List<Student> stus = new ArrayList<>();
stus.add(s);
stus.add(s1);
stus.add(s2);
stus.add(s3);
stus.add(s4);
stus.add(s5);
ScoreCalculateUtil.setStudents(stus);
Double avg = ScoreCalculateUtil.getAvg("1");
System.out.println(avg); // 73.75
}
}