66行应该是构建了一个班号 =》这个班分数list的的hashmap然后你应该两层的循环,外层遍历一下这个hashmap,内层遍历list,计算平均分;

解决方案 »

  1.   

    直接重新写一个嘛,比看它的代码简单多了,
    求平均分:遍历集合中的每个学生对象,将相同班级分数累加然后除以班级人数
    求平均年龄:遍历集合,得到所有学生的年龄,累加然后除以list.size();
      

  2.   

    年龄平均数容易,求年龄总和/学生个数.
    分班求平均分,需要用HashMap通过key把学生根据班级分到多个List中,然后分别求每个list的平均分.
      

  3.   

    每个班一个List;全部班用HashMap保存(Key是班号);所有的统计都从这个HashMap对象中获取原始数据;楼主去看下Map类的概念,就能理解代码在干嘛了
      

  4.   

    package cn.itcast.avg;import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;public class AvgAndSunDemo {
    public static void main(String[] args) {
    //数据准备
    List list = new ArrayList<Student>();
    list.add(new Student("Tom",18,100.0,"class05"));
    list.add(new Student("Jerry",22,70.0,"class04"));
    list.add(new Student("Owen",25,90.0,"class05"));
    list.add(new Student("Jim",30,80.0,"class05"));
    list.add(new Student("Steve",28,66.0,"class06"));
    list.add(new Student("Kevin",24,100.0,"class04"));

    int ageSum = 0;
    double avgAge = 0;
    Map<String, Double> classMap = new HashMap<String, Double>();
    Map<String, Integer> classMap2 = new HashMap<String, Integer>();

    for(int i = 0; i < list.size(); i++){
    //System.out.println(list.get(i));
    Student student = (Student) list.get(i);
    ageSum += student.getAge();//年龄总数
    Double beforeScore = classMap.put(student.getClassNum(),student.getScore());//map特性:返回覆盖前一个对象的value
    Integer beforeScore2 = classMap2.put(student.getClassNum(),1);
    if(beforeScore != null){
    classMap.put(student.getClassNum(),(student.getScore()+beforeScore));
    classMap2.put(student.getClassNum(),beforeScore2+1);
    }
    //System.out.println(beforeScore);
    }

    avgAge = ageSum / list.size();
    System.out.println("年龄总数:" + ageSum + " 平均年龄:" + avgAge);
    //System.out.println(classMap.size());

    Set<String> classSet = classMap.keySet();
    for (String keyStr : classSet) {
    System.out.println(keyStr + ":" + " 总分:" + classMap.get(keyStr) + 
    " 人数:" + classMap2.get(keyStr) + 
    " 平均分:" + classMap.get(keyStr)/classMap2.get(keyStr));
    }
    }
    }package cn.itcast.avg;public class Student {

    public String name;//姓名

    public Integer age;//年龄

    public Double score;//分数

    public String classNum;//班级ID
    public String getName() {
    return name;
    } public void setName(String name) {
    this.name = name;
    } public Integer getAge() {
    return age;
    } public void setAge(Integer age) {
    this.age = age;
    } public Double getScore() {
    return score;
    } public void setScore(Double score) {
    this.score = score;
    } public String getClassNum() {
    return classNum;
    } public void setClassNum(String classNum) {
    this.classNum = classNum;
    } @Override
    public String toString() {
    return "Student [name=" + name + ", age=" + age + ", score=" + score
    + ", classNum=" + classNum + "]";
    } public Student() {
    } public Student(String name, Integer age, Double score, String classNum) {
    super();
    this.name = name;
    this.age = age;
    this.score = score;
    this.classNum = classNum;
    }}运行结果: