从键盘输入以下的数据:“TOM:89|JERRY:990|TONY:95”,数据格式为“姓名:成绩|姓名:成绩”。输入的内容按成绩进行排序,并将排序结果按照成绩由高到低排序。
对于排序的处理肯定使用Comparable接口完成,同时利用Arrays类来处理,这里面唯一不同的地方就在于此时数据的现实需要通过键盘输入。
1 、建立Student的程序类,并进行排序规则的配置。
package demo.vo;
public class Student implements Comparable<Student>{
private String name;
private double score;
public Student(String name , double score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getScore() {
return this.score;
}
public void setScore(int score) {
this.score = score;
}
@Override
public String toString() {
return "姓名:" + this.name + "、分数:" + this.score;
}
@Override
public int compareTo(Student obj) {
if(this.score>obj.score) {
return 1;
}else {
return 0;
}
}
}
2、建立数据的输入处理操作,因为牵扯到拆分问题:
package demo.service;
import demo.vo.Student;
public interface IStudentService {
public Student[] getData();//获取排序数据
}
3、建立StudentService子类
package demo.service.impl;
import java.util.Arrays;
import demo.service.IStudentService;
import demo.vo.Student;
public class StudentServiceImpl implements IStudentService {
private String content;
private Student[] students;
public StudentServiceImpl(String content) {
this.content = content ;
this.handle();//进行数据处理
}
private void handle() {//进行字符串拆分
String result[] = this.content.split("\\|");//拆分数据
this.students = new Student[result.length];
for (int x = 0 ; x < this.students.length; x ++) {
String temp[] = result[x].split(":");
this.students[x] = new Student(temp[0],Double.parseDouble(temp[1]));
}
}
@Override
public Student[] getData() {
Arrays.sort(this.students);
return this.students;
}
}
4、定义Factory工厂类
package demo.factory;
import demo.InputUtil;
import demo.service.IStudentService;
import demo.service.impl.StudentServiceImpl;
public class Factory {
private Factory() {}
public static IStudentService getInstance() {
return new StudentServiceImpl(InputUtil.getString("请输入数据信息:"));
}
}
5、编写测试类
package demo;
import java.util.Arrays;
import demo.factory.Factory;
public class IOCaseDemo {
public static void main(String[] args) {
System.out.println(Arrays.toString(Factory.getInstance().getData()));
}
}
#TOM:88.8|CHERRY:99.8|DEMON:100.0|JOBS:66.66|SOLD:59.9
[姓名:DEMON、分数:100.0, 姓名:CHERRY、分数:99.8, 姓名:TOM、分数:88.8, 姓名:JOBS、分数:66.66, 姓名:SOLD、分数:59.9]
参考资料:https://edu.aliyun.com/lesson_1012_9021#_9021