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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

比下面这题还简单一点点,参数只有姓名,年龄,分数
public class Test7 {
        /**
         * * A:案例演示
         * 需求:键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台。
         *
         * 分析:
         * 1,定义一个学生类
         *                 成员变量:姓名,语文成绩,数学成绩,英语成绩,总成绩
         *                 成员方法:空参,有参构造,有参构造的参数分别是姓名,语文成绩,数学成绩,英语成绩
         *                           toString方法,在遍历集合中的Student对象打印对象引用的时候会显示属性值
         * 2,键盘录入需要Scanner,创建键盘录入对象
         * 3,创建TreeSet集合对象,在TreeSet的构造函数中传入比较器,按照总分比较
         * 4,录入五个学生,所以以集合中的学生个数为判断条件,如果size是小于5就进行存储
         * 5,将录入的字符串切割,用逗号切割,会返回一个字符串数组,将字符串数组中从二个元素转换成int数,
         * 6,将转换后的结果封装成Student对象,将Student添加到TreeSet集合中
         * 7,遍历TreeSet集合打印每一个Student对象
         
        public static void main(String[] args) {
                //2,键盘录入需要Scanner,创建键盘录入对象
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入学生成绩格式是:姓名,语文成绩,数学成绩,英语成绩");
                //3,创建TreeSet集合对象,在TreeSet的构造函数中传入比较器,按照总分比较
                TreeSet<Student> ts = new TreeSet<>(new Comparator<Student>() {

                        @Override
                        public int compare(Student s1, Student s2) {
                                int num = s2.getSum() - s1.getSum();
                                return num == 0 ? 1 : num;
                        }
                });
                //4,录入五个学生,所以以集合中的学生个数为判断条件,如果size是小于5就进行存储
                while(ts.size() < 5) {
                        //5,将录入的字符串切割,用逗号切割,会返回一个字符串数组,将字符串数组中从二个元素转换成int数,
                        String line = sc.nextLine();
                        String[] arr = line.split(",");
                        int chinese = Integer.parseInt(arr[1]);
                        int math = Integer.parseInt(arr[2]);
                        int english = Integer.parseInt(arr[3]);
                        //6,将转换后的结果封装成Student对象,将Student添加到TreeSet集合中
                        ts.add(new Student(arr[0], chinese, math, english));
                }
               
                //7,遍历TreeSet集合打印每一个Student对象
                System.out.println("排序后的学生信息:");
                for (Student s : ts) {
                        System.out.println(s);
                }
        }

39 个回复

正序浏览
Da_xigua 来自手机 初级黑马 2016-9-27 23:36:20
40#
谢谢楼主分享
回复 使用道具 举报
提前预习下~
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
喝咖啡的玉米 发表于 2016-9-27 12:17
感觉这样的话,并不是很难啊

是的,你把练习题自己敲过,能做出,就能过了,加油吧、少年
回复 使用道具 举报
hy000936 发表于 2016-9-25 21:51
第五小题后半部分能把题写明白吗,从二个元素是什么意思?

第一个存的是姓名,不需要转成int类型
回复 使用道具 举报
叫我宁采臣 发表于 2016-9-27 11:09
你是构造方法那里还要写一个getSum()的方法吗

在实体类中定义一个方法哟..
回复 使用道具 举报
感觉这样的话,并不是很难啊
回复 使用道具 举报
你是构造方法那里还要写一个getSum()的方法吗
回复 使用道具 举报
学习了不错不错
回复 使用道具 举报
6666666666666666
回复 使用道具 举报
楼主就业班了么
回复 使用道具 举报
来学习了 过几天学集合
回复 使用道具 举报
这个题还好点。有一个题是要求把性别为女的放在前面,按照分数排序呢;
回复 使用道具 举报
第五小题后半部分能把题写明白吗,从二个元素是什么意思?
回复 使用道具 举报
赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞!
回复 使用道具 举报
有点难感觉
回复 使用道具 举报
学习一下!!!!!!!!!!!!!!
回复 使用道具 举报
lixuelin 发表于 2016-9-20 21:56
恩,如果是强制用split的话那就说得过去了 ,今天正好学了set集合表示你在写匿名内部类的时候return num == ...

返回0变为1是为了TreeSet存储重复的;二叉树遍历方法有三种,前中序,你可以去看源码;总分相同你可以添加条件
回复 使用道具 举报
还没学到这来,感觉看不懂
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马