A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  提供一个文本文件,文件中保存的是姓名和成绩
  读取文件,对姓名和成绩按照成绩高低排序
  将排序后的结果,保存到另一个文件中
  数据中姓名,成绩可能重复
  对于文件有要求,提供你的文件 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();
        }
}

1 个回复

正序浏览
先抢占第一座
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马