You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

数组无法输出数字总和,求助实现学生测验总分及平均分计算

实现测验分数统计的Student类优化与完善

看起来你已经在正确的轨道上了——用一个独立的Student类来封装测验分数的统计逻辑是非常合理的面向对象设计思路!我先把你提供的代码补全并整理好,再给你解释核心功能和一些优化建议:

完整的Student类代码

public class Student {
    private String name;
    private int numOfQuizzes;
    private double totalScore;

    public Student(String name){
        this.name = name;
        // 显式初始化测验次数和总分,代码可读性更强
        this.numOfQuizzes = 0;
        this.totalScore = 0.0;
    }

    public String getName() {
        return name;
    }

    public void addQuiz(int score){
        numOfQuizzes++;
        totalScore += score;
    }

    public double getTotalScore() {
        return totalScore;
    }

    // 补充你缺失的平均分计算方法
    public double getAverageScore() {
        // 避免没有测验时出现除以0的运行时异常
        if (numOfQuizzes == 0) {
            return 0.0;
        }
        return totalScore / numOfQuizzes;
    }
}

核心功能拆解

  • 私有成员变量:用private修饰保证数据封装性和安全性,外部无法直接修改这些值,只能通过类提供的方法操作
    • name:存储学生姓名
    • numOfQuizzes:记录已添加的测验次数
    • totalScore:累计所有测验的总分
  • 构造方法:接收学生姓名作为参数,同时显式初始化测验次数和总分,避免依赖Java默认值,代码更清晰
  • 核心操作方法:
    • getName():获取学生姓名的标准getter方法
    • addQuiz(int score):每次调用传入单个测验分数,自动更新测验次数和总分,简化外部调用逻辑
    • getTotalScore():返回当前累计的总分
    • getAverageScore():计算并返回平均分,加入了空判断避免除以0的异常

实际使用示例

你可以在主类里这样调用这个Student类来实现功能:

public class QuizScoreDemo {
    public static void main(String[] args) {
        // 创建学生实例
        Student bob = new Student("Bob");
        // 模拟提交测验分数
        bob.addQuiz(90);
        bob.addQuiz(87);
        bob.addQuiz(95);
        // 获取并输出统计结果
        System.out.println("学生: " + bob.getName());
        System.out.println("测验总分: " + bob.getTotalScore());
        System.out.println("测验平均分: " + bob.getAverageScore());
    }
}

运行后输出:

学生: Bob
测验总分: 272.0
测验平均分: 90.66666666666667

可选优化建议

  • 添加分数合法性校验:避免传入非法分数(比如负数或超过满分),可以在addQuiz方法里加入校验逻辑:
    public void addQuiz(int score){
        if (score < 0 || score > 100) {
            throw new IllegalArgumentException("测验分数必须在0-100之间");
        }
        numOfQuizzes++;
        totalScore += score;
    }
    
  • 添加测验次数获取方法:如果需要展示学生参加了多少次测验,可以新增一个getter方法:
    public int getNumOfQuizzes() {
        return numOfQuizzes;
    }
    

内容的提问来源于stack exchange,提问作者b w

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:03:21