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
相关产品推荐
相关产品推荐

