这道题怎么做呢?刚学到集合 66行应该是构建了一个班号 =》这个班分数list的的hashmap然后你应该两层的循环,外层遍历一下这个hashmap,内层遍历list,计算平均分; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 直接重新写一个嘛,比看它的代码简单多了,求平均分:遍历集合中的每个学生对象,将相同班级分数累加然后除以班级人数求平均年龄:遍历集合,得到所有学生的年龄,累加然后除以list.size(); 年龄平均数容易,求年龄总和/学生个数.分班求平均分,需要用HashMap通过key把学生根据班级分到多个List中,然后分别求每个list的平均分. 每个班一个List;全部班用HashMap保存(Key是班号);所有的统计都从这个HashMap对象中获取原始数据;楼主去看下Map类的概念,就能理解代码在干嘛了 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; }}运行结果: new 构造方法名(){};什么意思啊??? 关于对象回收问题 大家说说这个的运行结果 关于◎SuppressWarnings("Unchecked") 如何调用正在运行的类的方法? 关于MessageFormat中小数点后面0的问题---急! java求一个正则表达式 看看我的程序好吗?各位大侠! JDBC 连接问题 关于初学人员在Java基础中数组操作的问题!!!! java.sql.SQLException: 列名无效 [问题点数:25分,结帖人zshzyh] 收藏 只会javase的理论知识 可以学安卓吗 别人说要会ee才行
求平均分:遍历集合中的每个学生对象,将相同班级分数累加然后除以班级人数
求平均年龄:遍历集合,得到所有学生的年龄,累加然后除以list.size();
分班求平均分,需要用HashMap通过key把学生根据班级分到多个List中,然后分别求每个list的平均分.
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;
}}运行结果: