本帖最后由 caobin 于 2015-1-7 15:55 编辑  
 
应该看到有好几次这题,所以就拿来做一下,但是我想法好像不太一样啊,这样做行吗,会不会不符合题意啊。{:2_33:}先放结果
 
 
 
代码:- import java.io.*;
 
 - import java.util.*;
 
 - class Test
 
 - {
 
 -         /*
 
 -         需求:有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,
 
 -            输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高到低的顺序写
 
 -            入到一个名称"stu.txt"文件中。要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清
 
 -            楚的看到学生的信息
 
 -                 
 
 -         思路:
 
 -                 1,获取键盘源
 
 -                 2,建立集合对象TreeSet
 
 -                 3,按照直观的格式写入文件
 
 -         */
 
 -         public static void main(String[] args)throws IOException
 
 -         {
 
 -                 //创建流对象
 
 -                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
 -                 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("stu.txt")));
 
 -                 //创建集合对象
 
 -                 TreeSet<Student> ts = new TreeSet<Student>();
 
 -                 //读取数据
 
 -                 String line = null;
 
 -                 while((line = br.readLine())!=null)
 
 -                 {
 
 -                         //录入完毕
 
 -                         if("over".equals(line))
 
 -                                 break;
 
 -                         else
 
 -                         {        
 
 -                                 ts.add(new Student(line));
 
 -                         }
 
 -                 }
 
 -                 System.out.println(ts);
 
 -                 String format = "姓名\t语文\t数学\t英语";
 
 -                 bw.write(format,0,format.length());
 
 -                 bw.newLine();
 
 -                 bw.flush();
 
 -                 for(Student s : ts)
 
 -                 {
 
 -                         //格式一下
 
 -                         String stu = s.toString().replaceAll(",","\t");
 
 -                         bw.write(stu,0,stu.length());
 
 -                         bw.newLine();
 
 -                         bw.flush();
 
 -                 }
 
 -                 br.close();
 
 -                 bw.close();
 
 -         }
 
 - }
 
 - class Student implements Comparable<Student>
 
 - {
 
 -         private String info;
 
 -         public Student(String info)
 
 -         {
 
  
-                 this.info = info;
 
 -         }
 
 -         //返回从键盘录入的字符串
 
 -         public String toString()
 
 -         {
 
 -                 return this.info;
 
 -         }
 
 -         //处理录入的数据,返回学生成绩做比较
 
 -         private int getScore()
 
 -         {
 
 -                 String[] str = this.info.split(",");
 
 -                 int score = Integer.parseInt(str[1])+Integer.parseInt(str[2])+Integer.parseInt(str[3]);
 
 -                 return score;
 
 -         }
 
 -         //返回学生姓名
 
 -         private String getName()
 
 -         {
 
 -                 String[] str = this.info.split(",");
 
 -                 return str[0];
 
 -         }
 
 -         public int compareTo(Student s)
 
 -         {
 
 -                 int num = s.getScore() - this.getScore();
 
 -                 if(num==0)
 
 -                         return this.getName().compareTo(s.getName());
 
 -                 return num;
 
 -         }
 
 - }
 
  复制代码 
 
至于异常处理我就不写了,做这样的题目写上异常处理也不利于代码阅读 
 
 
 |   
        
 
    
    
    
     
 
 |