Java基础知识IO流(练习)

练习:

要求:有五个学生,每个学生有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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值