- /*
- 有五个学生,每个学生3门课的成绩,
- 从键盘输入数据(姓名,三门课成绩),
- 并把学生的信息和计算出的总分高低顺序放在“stud。txt”
- 1,描述学生对象,
- 2,定义一个课操作学生对象的工具类。
- 思想:
- 1,通过键盘录入一组数据,并将该行信息取出封装成学生对象
- 2,因为学生有很多,那么就需要储存,使用到集合。因为要排序
- TreeSet
- 3,将集合的信息写入到一个文件中。
- */
- import java.io.*;
- import java.util.*;
- class Student //建立学生对象,并进行封装。
- {
- private String name; //进行私有化
- private int cn,math,english;
- private int sum;
- void student(String name,int cn,int math,int english)
- {
- this.name=name;
- this.cn=cn; // 赋值
- this.math=math;
- this.english=english;
- sum=cn+math+english; //不要忘记创建sum
-
- }
- public String getname() //调用参数
- {
- return name;
-
- }
- public int getsum()
- {
- return sum;
- }
- public int hashCode() // 哈希值一定要复写
- {
- return name.hashCode+sum*56;
-
- }
- public boolean equals(Object obj)
- {
- if (!(obj instanceof Student))
- {
- throw new ClassCastException("类型不匹配") ;
- }
- Student s = (Student) obj;
- return this.name.equals(s.name) && this.sum==s.sum;
- }
- public String toString()
- {
- return "student["+name+"'"+cn+","+math+"'"+english+"]" ;
- }
- }
- class CompareStudent // 创建比较方法,及其写入
- {
- public static Set<Student> getStudents() throws IOException
- {
- BufferedReader bufr=new BufferedReader(
- new InputStreamReader(System.in) );
-
- Set<Student> ts=new TreeSet<Student>();
- String len=null;
- while ((len=bufr.readLine())!=null)
- {
- if ("over".equals(len))
- {
- break;
- }
- String [] info = len.split(",") ; //切割“,”,用于读取
- Student stu = new Student(info[0],Integer.parseInt(info[1]),
- Integer.parseInt(info[2]),
- Integer.parseInt(info[3])) ;
- ts.add(stu);
- }
- bufr.close();
- return ts;
- //bufw.close();
- }
- public static void write2File(Set<Student> ts)
- {
- BufferedWriter bufw= new BufferedWriter(
- new FileWriter("Student.txt")) ;
-
- for (Student stu:ts )
- {
- bufw.write(stu.toString());
- bufw.write(stu.getsum());
- }
-
- }
- }
- class CopStudent //主函数 调用
- {
- public static void main(String[] args)
- throws IOException
- {
- CompareStudent. getStudents();
- }
- }
复制代码 |
|