zoukankan      html  css  js  c++  java
  • 数据排序处理

    要求:

      从键盘输入以下数据:“Tom:89.1|Jerry:90.1|qiangqiang:59.9”,数据格式为“姓名:成绩|姓名:成绩|姓名:成绩”,对输入的内容按成绩由高到低排序。

    1、设置一个文件的处理类,该类制作只是提供有数据的增加和读取。

     1 package cn.mldn.demo.util;
     2 import java.io.File;
     3 import java.io.FileOutputStream;
     4 import java.io.PrintStream;
     5 import java.util.Scanner;
     6 public class FileUtil {
     7     public static String load(File file) {
     8         Scanner scan = null;
     9         try {
    10             scan = new Scanner(file) ; // 文件加载
    11             if (scan.hasNext()) {
    12                 String str = scan.next(); // 获取数据
    13                 return str ;
    14             }
    15             return null ;
    16         } catch (Exception e) {
    17             return null ;  
    18         } finally {
    19             if (scan != null) {
    20                 scan.close();
    21             }
    22         }
    23     }
    24     public static boolean append(File file,String content) {
    25         PrintStream out = null ;
    26         try {
    27             out = new PrintStream(new FileOutputStream(file,true)) ;
    28             out.print(content); // 内容追加
    29             return true ;
    30         } catch (Exception e) {
    31             return false ;
    32         } finally {
    33             if (out != null) {
    34                 out.close(); 
    35             }
    36         }
    37     }
    38 }

    2、扩充IStudentService操作方法

    1 package com.sohu.demo.service;
    2 import com.sohu.demo.vo.Student;
    3 public interface IStudentService {
    4     public Student[] getData();
    5 }

    3、修改StudentServiceImpl中的功能

     1 package com.sohu.demo.service.impl;
     2 import java.util.Arrays;
     3 import com.sohu.demo.service.IStudentService;
     4 import com.sohu.demo.vo.Student;
     5 
     6 public class StudentServiceImpl implements IStudentService {
     7     private String content;
     8     private Student[] students;//这是什么意思?
     9     public StudentServiceImpl(String content) {
    10         this.content = content;
    11         this.handle();
    12     }
    13     public void handle() {
    14         String result[] = this.content.split("\|");
    15         this.students = new Student[result.length];
    16         for(int x=0;x<result.length;x++) {
    17             String temp[] = result[x].split(":");
    18             this.students[x] = new Student(temp[0], Double.parseDouble(temp[1]));
    19         }
    20     }
    21     @Override
    22     public Student[] getData() {
    23             Arrays.sort(this.students);
    24             return this.students;
    25     }
    26 }

    4、此时工厂类不再需要输入数据

     1 package com.sohu.demo.factory;
     2 
     3 import com.sohu.demo.service.IStudentService;
     4 import com.sohu.demo.service.impl.StudentServiceImpl;
     5 import cn.com.sina.demo.util.InputUtil;
     6 
     7 public class Factory {
     8     private Factory() {}
     9     public static IStudentService getInstance() {
    10         return new StudentServiceImpl(InputUtil.getString("请输入数据信息:"));
    11     }
    12 }

    5、定义一个菜单处理

     1 package cn.mldn.demo.menu;
     2 import java.util.Arrays;
     3 import cn.mldn.demo.factory.Factory;
     4 import cn.mldn.demo.service.IStudentService;
     5 import cn.mldn.demo.util.InputUtil;
     6 public class Menu {
     7     public Menu() {
     8         this.choose(); 
     9     }
    10     public void choose() {
    11         this.show() ;
    12         String choose = InputUtil.getString("请进行选择:") ;
    13         switch(choose) {
    14         case "1" : {    // 接收输入数据
    15             String str = InputUtil.getString("请输入要追加的数据:") ;
    16             IStudentService studentService = Factory.getInstance() ;
    17             studentService.append(str); // 追加数据
    18             choose() ;    // 重复出现
    19         }
    20         case "2" : {    // 显示数据
    21             IStudentService studentService = Factory.getInstance() ;
    22             System.out.println(Arrays.toString(studentService.getData()));
    23             choose() ;    // 重复出现
    24         }
    25         case "0" : {
    26             System.out.println("下次再见,拜拜!");
    27             System.exit(1); 
    28         }
    29         default : {
    30             System.out.println("您输入了非法的选项,无法进行处理,请确认后再次执行程序!");
    31             choose() ;
    32         }
    33         }
    34     }
    35     public void show() {
    36         System.out.println("【1】追加字符串数据
    ");
    37         System.out.println("【2】显示所有的学生数据
    ");
    38         System.out.println("【0】结束程序执行。");
    39         System.out.println("
    
    
    ");
    40     }
    41 }

    6、编写测试类

    1 package cn.mldn.demo;
    2 import cn.mldn.demo.menu.Menu;
    3 public class IOCaseDemo {
    4     public static void main(String[] args) {
    5         new Menu();
    6     }
    7 }

    运行结果:

    [姓名:Jerry、成绩:90.1, 姓名:Tom、成绩:89.1, 姓名:qiangqiang、成绩:59.9]

    那么问题来了,第三步StudentServiceImpl类中 private Student[] students;这是个什么意思?

  • 相关阅读:
    Ubuntu18.04 环境下 解决VScode中空格长度减小的问题
    IPython notebook(Jupyter notebook) 设置密码
    IPython notebook(Jupyter notebook)指定IP和端口运行
    ubuntu系统下 vscode中如何指定conda环境
    《Bitcoin: A Peer-to-Peer Electronic Cash System》 中本聪写的比特币白皮书
    QT-vs各个版本的编译器号对应的vs版本号
    惯性导航的组成
    论文引用格式
    SCI正刊和特刊(专刊/增刊)的区别是什么?
    python glob.glob() 函数
  • 原文地址:https://www.cnblogs.com/sunzhongyu008/p/11213195.html
Copyright © 2011-2022 走看看