Set集合练习(2)--- 键盘录入学生信息,按其总分进行排序

        今天我们来说说另外一个关于set集合的练习,上需求:键盘录入学生信息(姓名、语文成绩、数学成绩、外语成绩),输入“exit”结束输入,然后按照总分进行排序,输出到控制台。(录入学生信息格式【张三 92 88 99】

        告诉你需求了,那我们来分析一下吧,我们要做哪些事:

        1.首先我们创建一个Student类,添加姓名、语文成绩、数学成绩、英语成绩以及总分属性;

        上代码:

        然后Alt+Shift+S选择生成构造方法和ToString()方法:

               注意:生成构造方法的时候不要选择sum,生成toString()方法时只选择name和sum就行了, 然后就出现了这些代码:

        2.创建一个Set集合来存储学生信息,随后监听用户输入内容,然后判断用户是否输入为“exit”,是则退出循环,否则拆分该字符串,拆分后存到Set集合,最后遍历学生信息;

        代码:

        哈哈哈哈!写完一大半了,就差排序了哦!让我们先测试一下,嘿嘿嘿嘿:

        输入【张三 92 88 99】试一下:

        Oh,No!见红了!“java.lang.ClassCastException”类型转换异常?Excuse me???

        我们再往后看看,它说:“setDemo.Student cannot be cast to java.lang.Comparable”,就是说Student类不能被投射到比较器,不能投射?那我就给你加一个比较器!

        可是...可是,添加了还是不行啊,我们把鼠标移动到Student上看看,出现“Add unimplemented methods”,意思是添加未实现的方法,好,那就再给你加一个!点击之后出现了这段代码:

        上文说过,这个比较器默认“return 0;”,“return 0;”则代表只返回一个数;而“return 正数;”则代表正序输出;“return 负数;”则代表倒序输出。那么这里呢,我们就“return o.sum - this.sum;”,这样,解决刚才异常的同时,我们还完成了排序,真是棒棒哒!

        这回我们再来测试一下,输出结果如下:

        细心的朋友问了,要是我不小心把数据格式输错咋办?好,那我们就来试试输入格式错误的情况:

        又见红了!!!好气哦!!!

        怎么办?这里我们用一个try...catch就好啦,代码:

        这下应该没问题了,我们再来测试一下:

        OK!大功告成!上完整代码:

        Demo类:

        Student类:

        结语:以上就是Set集合练习(2)的全部内容,有说的不对的、不专业的地方还请大佬们多多为小弟指点,下次更新不见不散!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容