ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

IO流--学生成绩记录练习题

2021-12-03 17:35:54  阅读:104  来源: 互联网

标签:练习题 java -- 总成绩 ## int IO 成绩 public


如题所示

从score.txt文件中读取数据,文件中每行是一个学生的成绩记录,
内容格式为:
姓名、英语成绩、语文成绩、数学成绩、JAVA成绩。
要求:按总分从高到低排序后显示出每个学生的各科成绩和总成绩。
score.txt文件内容例如:
姓名##英语##语文##数学##JAVA
罗霄##68##95##52##81
刘苗苗##97##97##84##62
郝笑##75##93##87##52
李昊阳##86##83##88##68
雷鸣##54##73##70##91
李文龙##79##97##96##63
赵璧辉##52##51##75##97
姜治文##59##88##60##86
陈琳##86##53##58##63
苏浩##79##68##89##55
李金洲##61##89##72##71
王欢##82##66##86##70
王璐##68##60##84##70

主要代码

public static void main(String[] args) throws IOException {
        /*
        获取文档中的学生人数
         */
        FileReader fr = new FileReader("D:\\score.txt");
        BufferedReader br = new BufferedReader(fr);
        String str = null;
        int num = 0;//记录学生人数
        while ((str = br.readLine()) != null) {
            num++;
        }
        StudentDemo[] atu = new StudentDemo[num - 1];//建立一个学生类数组用于存储学生信息

        /*
        获取每个学生的信息
         */
        FileReader fread = new FileReader("D:\\score.txt");
        BufferedReader bread = new BufferedReader(fread);
        bread.readLine();  // 读取第一行,为后面读取的每行都是学生的信息

        String s = null;
        int count = 0;
        while ((s = bread.readLine()) != null) {//从文档中的第二行读取,每次读取一个学生的所有信息
            int sum = 0;//总成绩
            String[] infor = s.split("##");    // 存储第二行之后的每个学生的信息,因为文档中每个学生的信息中都有"##",所以split分割出学生的信息
            Integer[] score = new Integer[infor.length - 1];    //分割之后的转数字
            for (int i = 1; i < infor.length; i++) {
                score[i - 1] = new Integer(infor[i]); //获取infor数组中的成绩,存储到score数组中
                sum += score[i - 1]; //求成绩总和
            }

										//分别对应 姓名		英语	  语文      数学	  java
            StudentDemo stu = new StudentDemo(infor[0], score[0], score[1], score[2], score[3], sum);   // 存储每次读取的一位同学的所有信息
            atu[count] = stu;
            count++;
        }
        Arrays.sort(atu);//在Student类中重写了Compare方法,使用总成绩排序

        //遍历输出
        for (StudentDemo i : atu) {
            System.out.println(i);
        }
    }

Student类

public class StudentDemo implements Comparable<StudentDemo> {
    /*
    英语成绩、语文成绩、数学成绩、JAVA成绩
     */
    private String name;
    private int English;
    private int Chinese;
    private int Math;
    private int JavaS;
    private int num;

    public StudentDemo(String name, int english, int chinese, int math, int javaS, int num) {
        this.name = name;
        this.English = english;
        this.Chinese = chinese;
        this.Math = math;
        this.JavaS = javaS;
        this.num = num;
    }

    public String getName() {
        return name;
    }

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

    public int getEnglish() {
        return English;
    }

    public void setEnglish(int english) {
        English = english;
    }

    public int getMath() {
        return Math;
    }

    public void setMath(int math) {
        Math = math;
    }

    public int getChinese() {
        return Chinese;
    }

    public void setChinese(int chinese) {
        Chinese = chinese;
    }

    public int getJavaS() {
        return JavaS;
    }

    public void setJavaS(int javaS) {
        JavaS = javaS;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    @Override
    public String toString() {
        return "{" +
                "姓名='" + name + '\'' +
                ", 英语成绩=" + English +
                ", 语文成绩=" + Math +
                ", 数学成绩=" + Chinese +
                ", java成绩=" + JavaS +
                ", 总成绩=" + num +
                '}';
    }

    @Override
    public int compareTo(StudentDemo o) {
        return this.num - o.num;
    }
}

运行结果

{姓名='	陈琳', 英语成绩=86, 语文成绩=58, 数学成绩=53, java成绩=63, 总成绩=260}
{姓名='	赵璧辉', 英语成绩=52, 语文成绩=75, 数学成绩=51, java成绩=97, 总成绩=275}
{姓名='	王璐', 英语成绩=68, 语文成绩=84, 数学成绩=60, java成绩=70, 总成绩=282}
{姓名='	雷鸣', 英语成绩=54, 语文成绩=70, 数学成绩=73, java成绩=91, 总成绩=288}
{姓名='	苏浩', 英语成绩=79, 语文成绩=89, 数学成绩=68, java成绩=55, 总成绩=291}
{姓名='	姜治文', 英语成绩=59, 语文成绩=60, 数学成绩=88, java成绩=86, 总成绩=293}
{姓名='	李金洲', 英语成绩=61, 语文成绩=72, 数学成绩=89, java成绩=71, 总成绩=293}
{姓名='	罗霄', 英语成绩=68, 语文成绩=52, 数学成绩=95, java成绩=81, 总成绩=296}
{姓名='	王欢', 英语成绩=82, 语文成绩=86, 数学成绩=66, java成绩=70, 总成绩=304}
{姓名='	郝笑', 英语成绩=75, 语文成绩=87, 数学成绩=93, java成绩=52, 总成绩=307}
{姓名='	李昊阳', 英语成绩=86, 语文成绩=88, 数学成绩=83, java成绩=68, 总成绩=325}
{姓名='	李文龙', 英语成绩=79, 语文成绩=96, 数学成绩=97, java成绩=63, 总成绩=335}
{姓名='	刘苗苗', 英语成绩=97, 语文成绩=84, 数学成绩=97, java成绩=62, 总成绩=340}

Process finished with exit code 0

标签:练习题,java,--,总成绩,##,int,IO,成绩,public
来源: https://www.cnblogs.com/xiaofanmi/p/15639006.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有