使用Java计算课程绩点、课程学分绩点、总绩点

文章描述了一个Java程序,用于创建一个Grade实体类,存储课程的学分、成绩和学分绩点。用户可以输入多个科目的学分和成绩,程序会计算并输出总绩点。

1、定义实体类
实体类中包括属性表

名称释义
xuefen该课程学分
chengji该课程取得的成绩
xuefenjidian该课程取得的学分绩点
xuefen该课程取得的学分

其中有式子:
jidian=(chengji−50)10.0 jidian = \frac{(chengji-50)}{10.0} jidian=10.0(chengji50)
xuefenjidian=xuefen∗(chengji−50)10.0 xuefenjidian =\frac{ xuefen * (chengji-50)}{10.0} xuefenjidian=10.0xuefen(chengji50)

定义实体类代码如下:

public class Grade {
    private double xuefen;
    private double chengji;
    private double xuefenjidian;
    private double jidian;

    public double getXuefen() {
        return xuefen;
    }

    public void setXuefen(double xuefen) {
        this.xuefen = xuefen;
    }

    public double getChengji() {
        return chengji;
    }

    public void setChengji(int chengji) {
        this.chengji = chengji;
    }

    public double getJidian() {
        return (this.chengji - 50) / 10.0;
    }

    public double getXuefenjidian() {
        return this.xuefen * getJidian();
    }

    public void setJidian(double jidian) {
        this.jidian = jidian;
    }

    public void setXuefenji(double xuefenji) {
        this.xuefenjidian = xuefenji;
    }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("Grade{");
        sb.append("xuefen=").append(xuefen);
        sb.append(", chengji=").append(chengji);
        sb.append(", xuefenjidian=").append(xuefenjidian);
        sb.append(", jidian=").append(jidian);
        sb.append('}');
        return sb.toString();
    }
}

测试实体类:

public class Main {
    public static void main(String[] args) {
        Grade grade = new Grade();
        grade.setXuefen(1.0);
        grade.setChengji(95);
        grade.setXuefenji(grade.getXuefenjidian());
        grade.setJidian(grade.getJidian());
        System.out.println(grade);
    }
}

在这里插入图片描述
计算总学分绩点:

public class Main {
    public static void main(String[] args) {
        int i = 1;
        List<Grade> gradeList = new ArrayList<>();
        while (true) {
            System.out.printf("【科目%d】输入课程学分:", i);
            Scanner scanner1 = new Scanner(System.in);
            double xuefen = scanner1.nextDouble();
            System.out.printf("【科目%d】输入取得的成绩(优秀-95, 良好-85,中等-75, 及格-65, 不及格-<60):", i);
            Scanner scanner2 = new Scanner(System.in);
            double chengji = scanner2.nextDouble();
            Grade grade = new Grade();
            grade.setXuefen(xuefen);
            grade.setChengji(chengji);
            grade.setXuefenji(grade.getXuefenjidian());
            grade.setJidian(grade.getJidian());
            System.out.print("是否输入下一个科目?y or n 》 ");
            Scanner scanner3 = new Scanner(System.in);
            String letter = scanner3.nextLine();
            letter = letter.toLowerCase(Locale.ROOT);
            gradeList.add(grade);
            if ("n".equals(letter) || "no".equals(letter)) {
                break;
            }
            i++;
        }
        double sumXuefenjidian = gradeList.stream().mapToDouble(Grade::getXuefenjidian).sum();
        double sumXuefen = gradeList.stream().mapToDouble(Grade::getXuefen).sum();
        System.out.println("总绩点:" + sumXuefenjidian/sumXuefen);
    }
}

在这里插入图片描述
在这里插入图片描述

E:\Coding\java\env\jdk\run\Java\jdk1.8.0_291\bin\java.exe " app.Main
【科目1】输入课程学分:2
【科目1】输入取得的成绩(优秀-95, 良好-85,中等-75, 及格-65, 不及格-<60):97
是否输入下一个科目?y or n 》 
【科目2】输入课程学分:2
【科目2】输入取得的成绩(优秀-95, 良好-85,中等-75, 及格-65, 不及格-<60):75
是否输入下一个科目?y or n 》 
【科目3】输入课程学分:2
【科目3】输入取得的成绩(优秀-95, 良好-85,中等-75, 及格-65, 不及格-<60):85
是否输入下一个科目?y or n 》 
【科目4】输入课程学分:2
【科目4】输入取得的成绩(优秀-95, 良好-85,中等-75, 及格-65, 不及格-<60):83
是否输入下一个科目?y or n 》 
【科目5】输入课程学分:2
【科目5】输入取得的成绩(优秀-95, 良好-85,中等-75, 及格-65, 不及格-<60):85
是否输入下一个科目?y or n 》 
【科目6】输入课程学分:3
【科目6】输入取得的成绩(优秀-95, 良好-85,中等-75, 及格-65, 不及格-<60):85
是否输入下一个科目?y or n 》 
【科目7】输入课程学分:1
【科目7】输入取得的成绩(优秀-95, 良好-85,中等-75, 及格-65, 不及格-<60):93
是否输入下一个科目?y or n 》 
【科目8】输入课程学分:2
【科目8】输入取得的成绩(优秀-95, 良好-85,中等-75, 及格-65, 不及格-<60):79
是否输入下一个科目?y or n 》 
【科目9】输入课程学分:2
【科目9】输入取得的成绩(优秀-95, 良好-85,中等-75, 及格-65, 不及格-<60):83
是否输入下一个科目?y or n 》 
【科目10】输入课程学分:2
【科目10】输入取得的成绩(优秀-95, 良好-85,中等-75, 及格-65, 不及格-<60):84
是否输入下一个科目?y or n 》 
【科目11】输入课程学分:2
【科目11】输入取得的成绩(优秀-95, 良好-85,中等-75, 及格-65, 不及格-<60):83
是否输入下一个科目?y or n 》 
【科目12】输入课程学分:2
【科目12】输入取得的成绩(优秀-95, 良好-85,中等-75, 及格-65, 不及格-<60):94
是否输入下一个科目?y or n 》 
【科目13】输入课程学分:2
【科目13】输入取得的成绩(优秀-95, 良好-85,中等-75, 及格-65, 不及格-<60):90
是否输入下一个科目?y or n 》 
【科目14】输入课程学分:2
【科目14】输入取得的成绩(优秀-95, 良好-85,中等-75, 及格-65, 不及格-<60):81
是否输入下一个科目?y or n 》 n
总绩点:3.5214285714285714

Process finished with exit code 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘先生的u写倒了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值