黑马程序员技术交流社区

标题: 今晚老师很不客气的留下了这道体,我这样答是否满足了他呢? [打印本页]

作者: 回头浪子心    时间: 2014-8-18 23:21
标题: 今晚老师很不客气的留下了这道体,我这样答是否满足了他呢?
  提供一个文本文件,文件中保存的是姓名和成绩
  读取文件,对姓名和成绩按照成绩高低排序
  将排序后的结果,保存到另一个文件中
  数据中姓名,成绩可能重复
  对于文件有要求,提供你的文件 studentscore.txt 排序后另存的文件sortstudentscore.txt.


import java.util.*;
import java.io.*;
public class ScoreSort {
        public static void main(String[] args) throws IOException{
                //定义集合对象,存储文本中的姓名和成绩
                List<Student> list = new ArrayList<Student>();
                //定义File对象,文件进行封装
                File file = new File("c:\\student.txt");
                //定义字符输入流,读取源文件
                BufferedReader bfr = new BufferedReader(new FileReader(file));
                String line = null;
                while((line = bfr.readLine())!=null){
                        //字符串处理,切割,姓名和成绩
                        line = line.trim();
                        String[] str = line.split(" +");
                        //姓名str[0],成绩str[1]转成int,存储到集合
                        list.add(new Student(str[0],Integer.parseInt(str[1])));
                }
            //集合排序了,Collections工具类中的方法 sort,排序的是自定义对象
                Collections.sort(list,new MyComparatorStudent());
                //将排序后的内存,存储到新的文本文件中,要求文件名前面加sort
                //获取源文件的文件名
                String filename = file.getName();
                filename = "sort"+filename;
               
                //获取源文件的父路径
                String parent = file.getParent();
               
                //父路径和文件名组成File对象,传递给字符输出流写文件
                File newFile = new File(parent,filename);
                BufferedWriter bfw = new BufferedWriter(new FileWriter(newFile));
                for(Student s : list){
                        bfw.write(s.getName()+" "+s.getScore());
                        bfw.newLine();
                        bfw.flush();
                }
                bfr.close();
                bfw.close();
        }
}

作者: 沿途小将    时间: 2014-8-19 08:05
先抢占第一座




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2