A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© $uperWu. 初级黑马   /  2017-4-7 12:54  /  1271 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

7 个回复

倒序浏览
卡在这了 好难受 求大神解救
回复 使用道具 举报
自问自答吧
回复 使用道具 举报
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) + "分");
                }

        }

}
回复 使用道具 举报
我去,自问自答,我们还没学呢,你应该是和我同一期的
回复 使用道具 举报
可以。服你
回复 使用道具 举报
赞一个
回复 使用道具 举报
love20121217 来自手机 初级黑马 2017-4-8 12:45:24
8#
自问自答 很强势
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马