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

Java程序问题:如何计算4年课程成绩的年度平均分与总平均分

修正Java成绩统计程序:计算年度平均分与总平均分

原代码存在的问题

  • 年度总分计算逻辑错误:每次将sum固定赋值为results[0][0],且嵌套在j循环中导致重复输出5次,未正确累加对应年份的成绩
  • 未实现年度平均分计算
  • 缺少所有成绩总平均分的统计逻辑

修正后的代码

import javax.swing.JOptionPane;
public class YearlyResult {
    public static void main(String[] args) {
        // 声明变量
        String[] year = {"Year 1","Year 2","Year 3","Year 4"};
        int rows = year.length;
        int numCourses = 5;
        double[][] results = new double[rows][numCourses];
        double totalAllYears = 0; // 存储所有年份的总成绩,用于计算总平均分

        // 输入成绩
        for(int i = 0; i < rows; i++) {
            for(int j = 0; j < numCourses; j++) {
                results[i][j] = Double.parseDouble(
                    JOptionPane.showInputDialog(null, 
                    "Please enter result " + (j+1) + " for " + year[i])
                );
            }
        }

        // 输出成绩并计算统计值
        for(int i = 0; i < rows; i++) {
            double yearlySum = 0; // 存储当前年份的总成绩
            // 输出当前年份的每门成绩
            for(int j = 0; j < numCourses; j++) {
                System.out.println(year[i] + "  result #" + (j+1) + " is: " + results[i][j]);
                yearlySum += results[i][j]; // 累加当前年份的成绩
            }
            // 计算并输出当前年份的总分和平均分
            double yearlyAvg = yearlySum / numCourses;
            System.out.println(year[i] + " Total Score: " + yearlySum);
            System.out.println(year[i] + " Average Score: " + String.format("%.2f", yearlyAvg));
            // 累加到总总成绩
            totalAllYears += yearlySum;
            System.out.println("------------------");
        }

        // 计算并输出所有成绩的总平均分
        double overallAvg = totalAllYears / (rows * numCourses);
        System.out.println("Overall Average Score of All Years: " + String.format("%.2f", overallAvg));
    }
}

关键修正点说明

  • 新增yearlySum变量,在遍历每门成绩时累加,得到对应年份的总成绩
  • 通过yearlySum / numCourses计算年度平均分,用String.format("%.2f", ...)保留两位小数提升可读性
  • 新增totalAllYears全局累加变量,汇总所有年份的总成绩,最后除以总课程数(4*5)得到总平均分
  • 移除了原代码中错误的嵌套j循环,将年度统计逻辑放在对应年份的成绩输出之后,避免重复输出

内容的提问来源于stack exchange,提问作者Heber Goncalves

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:01:37