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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 奋发吧小白 高级黑马   /  2014-8-29 08:52  /  1481 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 奋发吧小白 于 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. }
复制代码




评分

参与人数 1技术分 +1 收起 理由
天黑偷牛 + 1 继续加油!

查看全部评分

11 个回复

倒序浏览
牛人啊!俺还是看懂了大部分,Io还没学呢!
回复 使用道具 举报
马克一下,马上就要看IO流了。
回复 使用道具 举报
LZ 大爱  我看了一下 受益匪浅
回复 使用道具 举报
嗯.不错 代码很规范
回复 使用道具 举报
还没看到这里,先收藏
回复 使用道具 举报
没用比较器吧    成绩应该是从低到高排的
回复 使用道具 举报
来看看学习学习,还没看到IO部分呢
回复 使用道具 举报
来看看...
回复 使用道具 举报
io还没学习到呢!
回复 使用道具 举报
顶一个
回复 使用道具 举报
ximi 中级黑马 2014-8-30 13:09:03
12#
不错,加油额
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马