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