Java基础知识IO流(练习)

来源:互联网 发布:双色球蓝球最新计算法 编辑:程序博客网 时间:2024/05/16 09:02

练习:

要求:有五个学生,每个学生有3门课的成绩,
从键盘输入以上数据(包括姓名,三门课成绩),
输入的格式:如:zhagnsan,30,40,60计算出总成绩,
并把学生的信息和计算出的总分数高低顺序存放在磁盘文件”stud.txt”中。
1,描述学生对象。
2,定义一个可操作学生对象的工具类。
思想:
1,通过获取键盘录入一行数据,并将该行中的信息取出封装成学生对象。
2,因为学生有很多,那么就需要存储,使用到集合。因为要对学生的总分排序。
所以可以使用TreeSet。
3,将集合的信息写入到一个文件中。

import java.io.*;import java.util.*;class StudentTest {    public static void main(String[] args) throws IOException    {        Set<Student> students=StudentInfoUtil.getStudents();        StudentInfoUtil.write2file(students);    }}class Student implements Comparable{    public String name;    public int yu,shu,ying;    public int zong;    Student(String name,int yu,int shu,int ying)    {        this.name=name;        this.yu=yu;        this.shu=shu;        this.ying=ying;        this.zong=yu+shu+ying;    }    public int compareTo(Object obj)    {        if(!(obj instanceof Student))            throw new RuntimeException("不是学生");        Student stu=(Student)obj;        if(this.zong<stu.zong)            return 1;        else if(this.zong==stu.zong)            return this.name.compareTo(stu.name);        return -1;    }}class StudentInfoUtil{    public static Set<Student> getStudents() throws IOException    {        BufferedReader bur=new BufferedReader(new InputStreamReader(System.in));        String line=null;        Set<Student> students=new TreeSet<Student>();        while((line=bur.readLine())!=null)        {            if(line.equals("over"))                break;            String[] info=line.split(",");            Student stu=new Student(info[0],Integer.parseInt(info[1]),                                   Integer.parseInt(info[2]),                                  Integer.parseInt(info[3]));            students.add(stu);        }        bur.close();        return students;    }    public static void write2file(Set<Student> students)throws IOException    {        BufferedWriter buw=new BufferedWriter(new FileWriter("stuinfo.txt"));        for(Student stu:students)        {            buw.write(stu.name+","+stu.zong);            buw.newLine();            buw.flush();        }        buw.close();    }}

这里写图片描述

0 0