输入、输出流

【实验目的】

       掌握字符输入、输出流用法;掌握使用Scanner类解析文件。

【实验要求】

       1、创建如下格式的成绩单(文本格式)score.txt:

       姓名:张三,数学72分,物理67分,英语70分.

姓名:李四,数学92分,物理98分,英语88分.

姓名:周五,数学68分,物理80分,英语77分.

要求:通过键盘输入3个学生的姓名及数学、物理、英语的成绩,每个学生的内容占一行,将数据保存在score.txt文件中。

2、通过实验1,获得如下格式的成绩单score.txt,例如:

       姓名:张三,数学72分,物理67分,英语70分.

姓名:李四,数学92分,物理98分,英语88分.

姓名:周五,数学68分,物理80分,英语77分.

要求按行读取成绩单,并在该行的后面加上该同学的总成绩,然后再将该行写入到一个名字为scoreAnalysis.txt的文件中。

package com.student;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet;

public class Demo07 {
    public static void main(String[] args) throws IOException {
       
        TreeSet<Student> ts = new TreeSet<>(new Comparator<Student>() {
            @Override
            public int compare(Student s1, Student s2) {
                int num1 = s2.getSum() - s1.getSum();
                int num2 = (num1 == 0) ? s2.getwuli() - s1.getwuli() : num1;
                int num3 = (num2 == 0) ? s2.getMath() - s1.getMath() : num2;
                int num4 = (num3 == 0) ? s2.getEnglish() - s1.getEnglish() : num3;
                int num5 = (num4 == 0) ? s2.getName().compareTo(s1.getName()) : num4;
                return (num5< 0) ? -1 : ((num5 == 0) ? 0 : 1);
            }
        });
        for (int i = 1; i <= 3; i++) {
            Scanner input = new Scanner(System.in);
            System.out.println("请输入第" + i + "个学生的信息:");
            System.out.print("姓名:");
            String n = input.next();
 
            System.out.print("数学:");
            int c = input.nextInt();
            System.out.print("物理:");
            int m = input.nextInt();
            System.out.print("英语:");
            int e = input.nextInt();
            Student s = new Student();
            s.setName(n);

            s.setwuli(c);
            s.setMath(m);
            s.setEnglish(e);
            ts.add(s);
        }
        //创建写入路径
        BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\score.txt"));
        for (Student t : ts) {
            System.out.println(t);
           //写入数据
            bw.write(String.valueOf(t));
            bw.newLine();
            bw.flush();
        }
        bw.close();
    }
}

package com.student;

class Student{
    private String name;
    private int wuli;
    private int math;
    private int english;

    public Student() {
    }

    public Student(String name,  int wuli, int math, int english) {
        this.name = name;
        this.wuli = wuli;
        this.math = math;
        this.english = english;
    }

    //获得总成绩的方法
    public int getSum() {
    //返回总成绩
        return wuli + math + english;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


    public int getwuli() {
        return wuli;
    }

    public void setwuli(int wuli) {
        this.wuli = wuli;
    }

    public int getMath() {
        return math;
    }

    public void setMath(int math) {
        this.math = math;
    }

    public int getEnglish() {
        return english;
    }

    public void setEnglish(int english) {
        this.english = english;
    }

    @Override
    public String toString() {
        return "姓名:" + name +
            
                ", 物理成绩:" + wuli +
                ", 数学成绩:" + math +
                ", 英语成绩:" + english;
    }
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值