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

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

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

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

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

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

1package person.xsc.practice; 2import java.util.ArrayList; 3import java.util.Collections; 4import java.util.Comparator; 5import java.util.List; 6import java.util.Scanner; 7public class GradeDemo { 8 static class Student { 9 String name; 10 int grade; 11 public String getName() { 12 return name; 13 } 14 public void setName(String name) { 15 this.name = name; 16 } 17 public int getGrade() { 18 return grade; 19 } 20 public void setGrade(int grade) { 21 this.grade = grade; 22 } 23 Student(String name,int grade){ 24 this.name=name; 25 this.grade=grade; 26 } 27 @Override 28 public String toString() { 29 return "Student [name=" + name + ", grade=" + grade + "]"; 30 } 31 } 32 static class stuCompare implements Comparator<Student>{ 33 @Override 34 public int compare(Student o1, Student o2) { 35 // TODO Auto-generated method stub 36 if (o1.equals(o2)) { 37 return 0; 38 } else if (o1.grade < o2.grade) { 39 return 1; 40 } else { 41 return -1; 42 } 43 } 44 } 45 public static void main(String[] args) { 46 // TODO Auto-generated method stub 47 Scanner scanner=new Scanner(System.in); 48 System.out.println("请输入内容,按下面格式(姓名:成绩|姓名:成绩|姓名:成绩):"+"例:TOM:89|JERRY:90|TONY:95"); 49 String[] StrArray = scanner.next().split("\\|"); 50 List<Student> list = new ArrayList<Student>(); 51 String[] StrArray2=new String[2]; 52 for(int i=0;i<StrArray.length;++i) { 53 StrArray2=StrArray[i].split(":"); 54 String stuname=StrArray2[0]; 55 int stugrade=Integer.parseInt(StrArray2[1]); 56 list.add(new Student(stuname,stugrade)); 57 } 58 Collections.sort(list, new stuCompare()); 59 for (int j = 0; j < list.size(); j++) { 60 System.out.print(list.get(j).name + " " + list.get(j).grade + " "); 61 } 62 63 } 64 65} 66输出: 67请输入内容,按下面格式(姓名:成绩|姓名:成绩|姓名:成绩):例:TOM:89|JERRY:90|TONY:95 68TOM:89|JERRY:90|TONY:95|THG:100 69THG 100 TONY 95 JERRY 90 TOM 89
点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

【排序算法动画解】排序介绍及冒泡排序

本文为系列专题的第12篇文章。1.2.3.4.5.6.7.8.9.10.11.本文先简单介绍一下什么是排序,然后再结合动画介绍暴力排序和冒泡排序。1.什么是排序?排序在日常生活中无处不在。比如考试成绩的排名、体育课的从低到高的队形、网购时按价格升序排列或降序排列等等。|姓名|学号|班级|成绩|||||

java面试之n+1问题

在一对多或者多对多的时候。如果通过一的一方取获得多的一方的数据。除了第一次查询表的数据以外。每获得一条多的一方的数据就查询一次。如:通过学生表的记录查询成绩表的记录。一个学生就查询一次,50个学生就查询50次。如果需要查询50个学生的成绩,需要查询数据库的次数为第一次查询学生的记录50次查询成绩的记录。这个情况我们成为N1.//需求:

SQL题目

Student(S,Sname,Sage,Ssex)学生表      S:学号;Sname:学生姓名;Sage:学生年龄;Ssex:学生性别Course(C,Cname,T)课程表                   C,课程编号;Cname:课程名字;T:教师编号SC(S,C,score)成绩表              

SQL 查询:查询学生平均成绩

  编程萌新,因为遇到这么个SQL查询的问题:在一张表A里有如下字段:学生姓名、学科名、学科成绩。写一条SQL语句查出各科平均成绩并按学生姓名分组,按如下格式显示:学生姓名|语文|数学|英语。一开始遇到的时候挺懵的,有印象但是却忘了怎么写了,接下来就是查阅资料并亲自上手测试是否可行~  第一次代码修修改改如下,此时还是在只用一张表来查询(无法实现上述

Python学生成绩管理系统

languageimportmatplotlib.pyplotaspltimporttimeimportos导入文件包importre正则表达式filename's.txt'filenamedl'sdl.txt'defmain():whileTrue:让菜单反复显示,相当于一个死循环menu