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

开发成绩簿:如何用数组计算全班各作业的平均分?

解决全班作业平均分计算的思路与代码示例

嘿,我懂你现在的处境——已经把学生成绩录入和个人最终成绩计算搞定了,结果卡在全班每项作业的平均分上,用数组的时候摸不清头绪对吧?其实用二维数组就能很清晰地解决这个问题,我给你一步步拆解:

核心思路:用二维数组存储成绩

我们可以用一个二维数组,其中:

  • 每一行对应一个学生的5项作业成绩
  • 每一列对应全班所有学生的某一项作业成绩

这样后续统计每列的总分、计算平均分就非常方便了。


具体实现步骤

1. 定义二维数组并获取学生数量

你已经有了获取学生数量的代码,我们直接基于它创建二维数组:

// 你原有的获取学生数量代码
int numStudents = Integer.parseInt(JOptionPane.showInputDialog(null,"Enter number of students:"));
// 创建二维数组:行数=学生数,列数=5项作业
int[][] studentScores = new int[numStudents][5];

2. 录入成绩并填充数组

用嵌套循环完成成绩录入,外层循环遍历每个学生,内层循环遍历5项作业,把成绩存入对应位置:

for (int studentIndex = 0; studentIndex < numStudents; studentIndex++) {
    JOptionPane.showMessageDialog(null, "Input scores for Student " + (studentIndex + 1));
    for (int assignmentIndex = 0; assignmentIndex < 5; assignmentIndex++) {
        String scoreInput = JOptionPane.showInputDialog(null, 
            "Enter score for Assignment " + (assignmentIndex + 1) + ":");
        studentScores[studentIndex][assignmentIndex] = Integer.parseInt(scoreInput);
    }
}

如果你的程序已经有录入成绩的逻辑,只需要把原来存储单个学生成绩的变量,改成存入这个二维数组对应位置就好,不用大幅改动现有代码。

3. 计算每项作业的平均分

遍历每一列(每项作业),累加该列所有学生的分数,再除以学生人数得到平均分。这里要注意用double类型存储平均分,避免整数除法导致的精度丢失:

// 定义数组存储5项作业的平均分
double[] assignmentAverages = new double[5];

for (int assignmentIndex = 0; assignmentIndex < 5; assignmentIndex++) {
    int totalScore = 0;
    // 累加当前作业的所有学生成绩
    for (int studentIndex = 0; studentIndex < numStudents; studentIndex++) {
        totalScore += studentScores[studentIndex][assignmentIndex];
    }
    // 计算平均分,强制转成double再做除法
    assignmentAverages[assignmentIndex] = (double) totalScore / numStudents;
}

4. 展示平均分结果

把计算好的平均分用弹窗展示出来,还可以用String.format来控制小数位数:

String averageResult = "Class Assignment Averages:\n";
for (int assignmentIndex = 0; assignmentIndex < 5; assignmentIndex++) {
    averageResult += String.format("Assignment %d: %.2f\n", 
        assignmentIndex + 1, assignmentAverages[assignmentIndex]);
}
JOptionPane.showMessageDialog(null, averageResult);

小提示

  • 可以加个输入验证逻辑,比如判断用户输入的是不是有效数字,避免程序崩溃(比如用try-catch包裹Integer.parseInt)。
  • 如果你的程序已经在计算学生个人最终成绩,完全可以在录入成绩的同时就完成个人成绩计算,不用额外循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:00:07