题目: 从键盘上输入以下的数据:"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
