自由编程——对输入内容排序(字符串拆分、对象比较)

执键写春秋
• 阅读 1307

题目: 从键盘上输入以下的数据:"TOM:89|JERRY:90|TONY:95",数据格式为“姓名:成绩|姓名:成绩|姓名:成绩”,对输入的内容按成绩进行排序,并将结果按成绩由高到低排序。

第一步,通过阅读题目,对TOM:89|JERRY:90|TONY:95以“|”拆分后是,TOM:89、JERRY:90和TONY:95,对应三个学生对象,所以要有一个学生类,其中属性有成绩、姓名,同时完成构造与get/set方法。

第二步,比较对象需要有比较器实现Comparator并覆写compare方法。

第三步,两次拆分字符串,完成学生实例注入集合。

第四步,集合排序并输出最终结果。

package person.xsc.practice;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
public class GradeDemo {
    static class Student {
        String name;
        int grade;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getGrade() {
            return grade;
        }
        public void setGrade(int grade) {
            this.grade = grade;
        }
        Student(String name,int grade){
            this.name=name;
            this.grade=grade;
        }
        @Override
        public String toString() {
            return "Student [name=" + name + ", grade=" + grade + "]";
        }
    }
    static class stuCompare implements Comparator<Student>{
        @Override
        public int compare(Student o1, Student o2) {
            // TODO Auto-generated method stub
            if (o1.equals(o2)) {
                return 0;
            } else if (o1.grade < o2.grade) {
                return 1;
            } else {
                return -1;
            }
        }
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入内容,按下面格式(姓名:成绩|姓名:成绩|姓名:成绩):"+"例:TOM:89|JERRY:90|TONY:95");
        String[] StrArray = scanner.next().split("\\|");
        List<Student> list = new ArrayList<Student>();
        String[] StrArray2=new String[2];
        for(int i=0;i<StrArray.length;++i) {
            StrArray2=StrArray[i].split(":");
            String stuname=StrArray2[0];
            int stugrade=Integer.parseInt(StrArray2[1]);
            list.add(new Student(stuname,stugrade));
        }
        Collections.sort(list, new stuCompare());
        for (int j = 0; j < list.size(); j++) {
            System.out.print(list.get(j).name + " " + list.get(j).grade + " ");
        }

    }

}
输出:
请输入内容,按下面格式(姓名:成绩|姓名:成绩|姓名:成绩):例:TOM:89|JERRY:90|TONY:95
TOM:89|JERRY:90|TONY:95|THG:100
THG 100 TONY 95 JERRY 90 TOM 89 
点赞
收藏
评论区
推荐文章
22 22
3年前
【排序算法动画解】排序介绍及冒泡排序
本文为系列专题的第12篇文章。1.2.3.4.5.6.7.8.9.10.11.本文先简单介绍一下什么是排序,然后再结合动画介绍暴力排序和冒泡排序。1.什么是排序?排序在日常生活中无处不在。比如考试成绩的排名、体育课的从低到高的队形、网购时按价格升序排列或降序排列等等。|姓名|学号|班级|成绩|||||
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
菜鸟小欧 菜鸟小欧
3年前
Python学生成绩管理系统
languageimportmatplotlib.pyplotaspltimporttimeimportos导入文件包importre正则表达式filename's.txt'filenamedl'sdl.txt'defmain():whileTrue:让菜单反复显示,相当于一个死循环menu
Wesley13 Wesley13
3年前
SQL题目
Student(S,Sname,Sage,Ssex)学生表      S:学号;Sname:学生姓名;Sage:学生年龄;Ssex:学生性别Course(C,Cname,T)课程表                   C,课程编号;Cname:课程名字;T:教师编号SC(S,C,score)成绩表              
Wesley13 Wesley13
3年前
java面试之n+1问题
在一对多或者多对多的时候。如果通过一的一方取获得多的一方的数据。除了第一次查询表的数据以外。每获得一条多的一方的数据就查询一次。如:通过学生表的记录查询成绩表的记录。一个学生就查询一次,50个学生就查询50次。如果需要查询50个学生的成绩,需要查询数据库的次数为第一次查询学生的记录50次查询成绩的记录。这个情况我们成为N1.//需求:
Wesley13 Wesley13
3年前
SQL 查询:查询学生平均成绩
  编程萌新,因为遇到这么个SQL查询的问题:在一张表A里有如下字段:学生姓名、学科名、学科成绩。写一条SQL语句查出各科平均成绩并按学生姓名分组,按如下格式显示:学生姓名|语文|数学|英语。一开始遇到的时候挺懵的,有印象但是却忘了怎么写了,接下来就是查阅资料并亲自上手测试是否可行~  第一次代码修修改改如下,此时还是在只用一张表来查询(无法实现上述
Wesley13 Wesley13
3年前
Mysql 查询所有课程的成绩第2名到第3名的学生信息及该课程成绩
 查询所有课程的成绩第2名到第3名的学生信息及该课程成绩1\.查询课程ID为‘01’的课程的成绩第2名到第3名的学生信息及该课程成绩SELECT  d.,c.排名,c.s_score,c.c_idFROM  (SELECTa.s_id,a.s_score,a.c_id,@i:@i1AS排名FROMs
Stella981 Stella981
3年前
Hive实战之学生课程成绩
基表:usemyhive;CREATETABLEcourse(idint,sidint,coursestring,scoreint);INSERTINTOcourseVALUES(1,1,'yuwe
小万哥 小万哥
9个月前
深入了解 Python MongoDB 操作:排序、删除、更新、结果限制全面解析
PythonMongoDB排序对结果进行排序使用sort()方法对结果进行升序或降序排序。sort()方法接受一个参数用于“字段名”,一个参数用于“方向”(升序是默认方向)。示例按名称按字母顺序对结果进行排序:pythonimportpymongomycl
Python进阶者 Python进阶者
9个月前
Python自动化办公的实际需求——把Excel里面的数字改成对应的成绩档次,优良中差四挡(上篇)
大家好,我是皮皮。一、前言前几天在Python白银交流群【瑜亮老师】分享了一个小需求,给大家练练手。问题如下:成绩表中有3个sheet,大体上题目是从易到难。要求:把里面的数字改成对应的成绩档次,优良中差四挡。4个档次:100分为“优”,8099分为“良”