数据排序处理
从键盘输入以下的数据:“TOM:89|JERRY:90|TONRY:95”,数据格式为“姓名:成绩|姓名:成绩|姓名:成绩”,对输入内按成绩进行排序,并将排序结果按照成绩由高到低排序。
对于排序的处理肯定使用Comparable接口完成,同时利用Arrays类处理,唯一不同的地方在于此时的数据显示需要通过键盘输入。
- 建立student程序类进行排序的处理。
package com.demo.util; 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 toString() { return "姓名:" +this.name +"、成绩:"+this.score; } @Override public int compareTo(Student o) { if(this.score > o.score){ return -1; }else if(this.score < o.score) { return 1; }else { return 0; } } }
- 定义实现操作的接口
package com.demo.service; import com.demo.util.Student; public interface IStudent { public Student[] getData(); //获取排序数据 }
- 定义实现子类
package com.demo.serviceImpl; import java.util.Arrays; import com.demo.service.IStudent; import com.demo.util.Student; public class StudentImpl implements IStudent{ private String content; private Student[] students; public StudentImpl(String content) { this.content = content; this.handle(); //进行输入处理 } public 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; } }
-
定义工厂类
package com.demo.factory; import com.demo.service.IStudent; import com.demo.serviceImpl.StudentImpl; import com.demo.util.InputUtil; public class Factory { private Factory() {} public static IStudent getInstance() { return new StudentImpl(InputUtil.getString("请输入数据信息:")); } }
-
定义输入类
package com.io.demo.InputUtil; import java.util.Scanner; public class InputUtil { private InputUtil() {} /** * 接收并返回输入的字符串内容 * @param prompt 提示语句 * @return 返回输入的字符串 */ public static String getString(String prompt) { String str = null; boolean flag = true; while(flag) { Scanner input = new Scanner(System.in); System.out.println(prompt); if(input.hasNext()) { str = input.next().trim(); //去除首位空格 if(!"".equals(str)) { //不是字符串 flag = false; } }else { System.out.println("输入的内容不允许为空!"); } } return str; } }
-
主方法实现功能
package com.demo; import java.util.Arrays; import com.demo.factory.Factory; import com.demo.service.IStudent; public class StudentDemo { public static void main(String[] args) { IStudent student = Factory.getInstance(); System.out.println(Arrays.toString(student.getData())); } }