(JavaIO编程案例)数据排序处理

数据排序处理

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

对于排序的处理肯定使用Comparable接口完成,同时利用Arrays类处理,唯一不同的地方在于此时的数据显示需要通过键盘输入。

  1. 建立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;
    		}
    		
    	}
    	
    }
    

     

  2. 定义实现操作的接口
    package com.demo.service;
    
    import com.demo.util.Student;
    
    public interface IStudent {
    
    	public Student[] getData();	//获取排序数据
    	
    }
    

     

  3. 定义实现子类
    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;
    		
    	}
    
    	
    	
    }
    
  4. 定义工厂类

    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("请输入数据信息:"));
    		
    	}
    	
    }
    

     

  5. 定义输入类

    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;
    	}
    	
    }
    
  6. 主方法实现功能

    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()));
    		
    	}
    	
    }
    

     

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值