黑马程序员技术交流社区

标题: 这个题一点思路没有啊 求助 [打印本页]

作者: $uperWu.    时间: 2017-4-7 12:54
标题: 这个题一点思路没有啊 求助
分析以下需求,并用代码实现:
        (1)定义一个学生类Student,属性:姓名(String name)、班级班号(String no)、成绩(double score)
        (2)将若干Student对象存入List集合,并统计每个班级的总分和平均分
                思路:
                        a.采用面向对象的思想
                        b.不推荐使用Map<String,List<Student>> 操作不方便
                        c.推荐使用Map<String,ClassRoom>

作者: $uperWu.    时间: 2017-4-7 12:59
卡在这了 好难受 求大神解救
作者: $uperWu.    时间: 2017-4-7 16:07
自问自答吧
作者: $uperWu.    时间: 2017-4-7 16:13
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class studentManager {

        // 学生类
        static class Student {
                private String name;
                private String no;
                private Double score;

                public Student() {
                        super();
                }

                public Student(String name, String no, Double score) {
                        super();
                        this.name = name;
                        this.no = no;
                        this.score = score;
                }

                public String getName() {
                        return name;
                }

                public void setName(String name) {
                        this.name = name;
                }

                public String getNo() {
                        return no;
                }

                public void setNo(String no) {
                        this.no = no;
                }

                public Double getScore() {
                        return score;
                }

                public void setScore(Double score) {
                        this.score = score;
                }

        }

        // 教室类
        static class ClassRoom {
                private List<Student> classRoom;

                public List<Student> getClassRoom() {
                        return classRoom;
                }

                public void setClassRoom(List<Student> classRoom) {
                        this.classRoom = classRoom;
                }

        }

        public static void main(String[] args) {
                // 初始化数据
                ClassRoom c1 = new ClassRoom();
                ClassRoom c2 = new ClassRoom();
                ArrayList<Student> l1 = new ArrayList<Student>();
                ArrayList<Student> l2 = new ArrayList<Student>();
                l1.add(new Student("小李", "01", 97.15));
                l1.add(new Student("小张", "01", 86.70));
                l1.add(new Student("小赵", "01", 72.35));
                l2.add(new Student("小王", "02", 99.25));
                l2.add(new Student("小强", "02", 68.70));
                l2.add(new Student("小刘", "02", 79.58));
                c1.setClassRoom(l1);
                c2.setClassRoom(l2);

                // 定义Map集合
                Map<String, ClassRoom> map = new HashMap<String, ClassRoom>();
                for (int i = 0; i < l1.size(); i++) {
                        map.put(l1.get(i).getNo(), c1);
                }
                for (int i = 0; i < l2.size(); i++) {
                        map.put(l2.get(i).getNo(), c2);
                }

                // 规定格式化
                DecimalFormat df = new DecimalFormat("######0.00");

                // 遍历map
                Set keySet = map.keySet();
                Iterator it = keySet.iterator();
                while (it.hasNext()) {
                        Double sum = 0.0;
                        Double avg = 0.0;
                        String key = (String) it.next();
                        ClassRoom value = (ClassRoom) map.get(key);
                        // 遍历集合求总成绩与平均成绩
                        for (Student ss : value.getClassRoom()) {
                                sum += ss.getScore();
                                avg = sum / value.getClassRoom().size();
                        }
                        System.out.println(key + "班总成绩为" + df.format(sum) + "分");
                        System.out.println(key + "班平均成绩为" + df.format(avg) + "分");
                }

        }

}

作者: MMM521    时间: 2017-4-7 20:33
我去,自问自答,我们还没学呢,你应该是和我同一期的
作者: g1336855116    时间: 2017-4-7 23:34
可以。服你
作者: 围城丶    时间: 2017-4-8 00:59
赞一个
作者: love20121217    时间: 2017-4-8 12:45
自问自答 很强势




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2