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 个回复

倒序浏览
学习了!
回复 使用道具 举报
我先试着做一下。
回复 使用道具 举报
我还没学set集合
我直接这样输入5个学生信息然后用set集合否也可以比较学生成绩然后遍历呢
                Scanner sc = new Scanner(System.in);
                ArrayList<Student> list = new ArrayList<Student>();
                for(int i = 0; i < 5 ; i ++){
                        System.out.println("请输入学生姓名");
                        String name = sc.next();
                        System.out.println("请输入语文成绩");
                        int chineseSorce = sc.nextInt();
                        System.out.println("请输入数学成绩");
                        int mathSorce = sc.nextInt();
                        System.out.println("请输入英语成绩");
                        int englishSorce = sc.nextInt();
                        list.add(new Student(name,chineseSorce,mathSorce,englishSorce));
                }
回复 使用道具 举报
看着好难啊。。。。
回复 使用道具 举报
值得借鉴
回复 使用道具 举报
首先第一行输完后就出现了ArrayIndexOutOfBoundsException这个异常,第二,不明白如何只用spilt()方法就可以将输入的字符串中的字符和数字分开。
回复 使用道具 举报
如果点招只是考这样的还是可以的,O(∩_∩)O哈哈哈~
回复 使用道具 举报
按我现在的知识,,看这个感觉太遥远!
回复 使用道具 举报
这是什么的点招题,Android还是javaee
回复 使用道具 举报
赞赞赞赞赞赞赞赞
回复 使用道具 举报
好定西,做一下
回复 使用道具 举报
江月念华 发表于 2016-9-19 23:34
这是什么的点招题,Android还是javaee

JavaEE的。。。。。。。。。。。
回复 使用道具 举报
lixuelin 发表于 2016-9-19 22:27
我还没学set集合
我直接这样输入5个学生信息然后用set集合否也可以比较学生成绩然后遍历呢
                Scanner sc =  ...

但是他要求用split,说明用字符串录入
回复 使用道具 举报
kansyoukyou 发表于 2016-9-19 22:57
首先第一行输完后就出现了ArrayIndexOutOfBoundsException这个异常,第二,不明白如何只用spilt()方法就可 ...

你要按照提示的格式输入,split就是根据你给的规则拆分字符串,然后存在字符串数组里,看不懂的话可以去看源码
回复 使用道具 举报
江月念华 发表于 2016-9-19 23:34
这是什么的点招题,Android还是javaee

我这是JavaEE的,不过基础班上的都一样的。也差不多
回复 使用道具 举报
哦哦哦哦哦
回复 使用道具 举报
kangnam 发表于 2016-9-20 11:23
但是他要求用split,说明用字符串录入

恩,如果是强制用split的话那就说得过去了 ,今天正好学了set集合表示你在写匿名内部类的时候return num ==0? 1: num; 这里如果num ==0 表示返回1 如果不等于0表示返回num如果你返回1的话岂不是把你输入的对象放到了根的右边?又或者如果你成绩总分是相同的,那你怎么比较高低呢? 这时候你录入的数据自动放到跟的右边是什么根据?
回复 使用道具 举报
haoke 来自手机 初级黑马 2016-9-20 22:15:56
19#
看得有点晕,刚开始学习面向对象
回复 使用道具 举报
感觉几条街的差距
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马