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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© caobin 中级黑马   /  2015-1-7 15:51  /  1354 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 caobin 于 2015-1-7 15:55 编辑

应该看到有好几次这题,所以就拿来做一下,但是我想法好像不太一样啊,这样做行吗,会不会不符合题意啊。{:2_33:}先放结果

代码:
  1. import java.io.*;
  2. import java.util.*;
  3. class Test
  4. {
  5.         /*
  6.         需求:有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,
  7.            输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高到低的顺序写
  8.            入到一个名称"stu.txt"文件中。要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清
  9.            楚的看到学生的信息
  10.                
  11.         思路:
  12.                 1,获取键盘源
  13.                 2,建立集合对象TreeSet
  14.                 3,按照直观的格式写入文件
  15.         */
  16.         public static void main(String[] args)throws IOException
  17.         {
  18.                 //创建流对象
  19.                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  20.                 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("stu.txt")));
  21.                 //创建集合对象
  22.                 TreeSet<Student> ts = new TreeSet<Student>();
  23.                 //读取数据
  24.                 String line = null;
  25.                 while((line = br.readLine())!=null)
  26.                 {
  27.                         //录入完毕
  28.                         if("over".equals(line))
  29.                                 break;
  30.                         else
  31.                         {       
  32.                                 ts.add(new Student(line));
  33.                         }
  34.                 }
  35.                 System.out.println(ts);
  36.                 String format = "姓名\t语文\t数学\t英语";
  37.                 bw.write(format,0,format.length());
  38.                 bw.newLine();
  39.                 bw.flush();
  40.                 for(Student s : ts)
  41.                 {
  42.                         //格式一下
  43.                         String stu = s.toString().replaceAll(",","\t");
  44.                         bw.write(stu,0,stu.length());
  45.                         bw.newLine();
  46.                         bw.flush();
  47.                 }
  48.                 br.close();
  49.                 bw.close();
  50.         }
  51. }
  52. class Student implements Comparable<Student>
  53. {
  54.         private String info;
  55.         public Student(String info)
  56.         {

  57.                 this.info = info;
  58.         }
  59.         //返回从键盘录入的字符串
  60.         public String toString()
  61.         {
  62.                 return this.info;
  63.         }
  64.         //处理录入的数据,返回学生成绩做比较
  65.         private int getScore()
  66.         {
  67.                 String[] str = this.info.split(",");
  68.                 int score = Integer.parseInt(str[1])+Integer.parseInt(str[2])+Integer.parseInt(str[3]);
  69.                 return score;
  70.         }
  71.         //返回学生姓名
  72.         private String getName()
  73.         {
  74.                 String[] str = this.info.split(",");
  75.                 return str[0];
  76.         }
  77.         public int compareTo(Student s)
  78.         {
  79.                 int num = s.getScore() - this.getScore();
  80.                 if(num==0)
  81.                         return this.getName().compareTo(s.getName());
  82.                 return num;
  83.         }
  84. }
复制代码


至于异常处理我就不写了,做这样的题目写上异常处理也不利于代码阅读


2 个回复

倒序浏览
不是还有对总分从高到低排序吗
回复 使用道具 举报
\t真能解决格式的问题么 班里有个新疆的哥们呢? 成绩就不对齐了吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马