黑马程序员技术交流社区

标题: IO流学习总结小练习 [打印本页]

作者: 奋发吧小白    时间: 2014-8-29 08:52
标题: IO流学习总结小练习
本帖最后由 奋发吧小白 于 2014-8-29 08:53 编辑
  1. <div class="blockcode"><blockquote>/*
  2. 有五个学生,每个学生有3门科=课的成绩,
  3. 从键盘输入以上数据(包括姓名,三门课成绩),
  4. 输入的格式:如:张三,30,40,60计算出总成绩
  5. 并把学生的信息和计算出的总成绩高低顺序放在磁盘文件“stu.txt”中。
  6. 分析:
  7. 1,描述学生对象
  8. 2,定义一个可以操作学生对象的工具类
  9. 思想:
  10. 1,通过获取键盘录入的一行数据,并将改行数据取出封装成学生对象。
  11. 2,因为学生对象有很多,n那么就需要使用集合,因为学生总分需要排序,所以需要使用TreeSet
  12. 3,将集合中的信息写入到文件中
  13. */
  14. import java.io.*;
  15. import java.util.*;
  16. class Student implements Comparable<Student>
  17. {
  18.         private String name;
  19.         private int ma,cn,en;//代表三门成绩
  20.         private int sum;
  21.         Student(String name,int ma,int cn,int en)
  22.         {
  23.                 this.name =name;
  24.                 this.ma =ma;
  25.                 this.cn =cn;
  26.                 this.en = en;
  27.                 sum =ma+cn+en;
  28.         }
  29.         public int compareTo(Student s)
  30.         {
  31.                 int num = new Integer(this.sum).compareTo(new Integer (s.sum));
  32.                 if(num==0)
  33.                         return this.name.compareTo(s.name);
  34.                 return num;
  35.        
  36.         }
  37.         public String getName()
  38.         {
  39.                 return name;
  40.         }
  41.         public int getSum()
  42.         {
  43.                 return sum;
  44.         }
  45.         public int hashCode()
  46.         {
  47.                 return name.hashCode()+sum*78 ;
  48.         }
  49.         public boolean equals(Object obj)
  50.         {       
  51.                 if(!(obj instanceof Student))
  52.                         throw new ClassCastException("类型不匹配");
  53.                 Student s = (Student)obj;
  54.                 return this.name.equals(s.name)&& this.sum ==s.sum;
  55.         }
  56.         public String toString()
  57.         {
  58.                 return "student["+name+","+ma+","+cn+","+en+"]";
  59.         }
  60. }
  61. class StudentInfoTool
  62. {
  63.         public static Set<Student>getStudents() throws Exception
  64.         {
  65.                 BufferedReader bufr =
  66.                         new BufferedReader(new InputStreamReader(System.in));
  67.                 Set<Student>stus = new TreeSet<Student>();
  68.                 String line = null;
  69.                
  70.                 while ((line = bufr.readLine())!=null)
  71.                 {
  72.                         if ("over".equals(line))
  73.                                 break;
  74.                          String [] info = line.split(",");
  75.                          Student stu = new Student(info[0],
  76.                                          Integer.parseInt(info[1]),
  77.                                          Integer.parseInt(info[2]),
  78.                                          Integer.parseInt(info[3]));
  79.                          stus.add(stu);
  80.                 }
  81.                  bufr.close();
  82.                  return stus;
  83.         }
  84.         public static void write2File(Set<Student> stus) throws Exception
  85.         {
  86.                 BufferedWriter bufw =
  87.                         new BufferedWriter(new FileWriter("stu.txt"));
  88.                 for(Student stu:stus)
  89.                 {
  90.                         bufw.write(stu.toString());
  91.                         bufw.write(stu.getSum()+"");
  92.                         bufw.newLine();
  93.                         bufw.flush();

  94.                 }
  95.                 bufw.close();
  96.         }
  97. }
  98. class  StudentInfoTest
  99. {
  100.         public static void main(String[] args) throws Exception
  101.         {
  102.                 Set<Student> stus = StudentInfoTool.getStudents();
  103.                 StudentInfoTool.write2File(stus);
  104.         }
  105. }
复制代码





作者: 范靖明    时间: 2014-8-29 09:07
牛人啊!俺还是看懂了大部分,Io还没学呢!
作者: yaodd321    时间: 2014-8-29 09:34
马克一下,马上就要看IO流了。
作者: 张周飞    时间: 2014-8-29 09:39
LZ 大爱  我看了一下 受益匪浅
作者: 文盲庄稼汉    时间: 2014-8-29 09:58
嗯.不错 代码很规范
作者: 许愿じ☆VE杰    时间: 2014-8-29 10:16
还没看到这里,先收藏
作者: 波风梅西    时间: 2014-8-29 12:40
没用比较器吧    成绩应该是从低到高排的
作者: 戏言丶    时间: 2014-8-29 13:22
来看看学习学习,还没看到IO部分呢
作者: 永恒星空    时间: 2014-8-29 15:09
来看看...
作者: WJN_YES    时间: 2014-8-30 10:53
io还没学习到呢!
作者: 梦里听传说    时间: 2014-8-30 11:16
顶一个

作者: ximi    时间: 2014-8-30 13:09
不错,加油额




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