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

Java技术求助:如何计算文本文件中每个学生分数的元素级平均值?

解决整体分数平均值计算的问题

我明白你的需求了——你不是要计算每个学生(每行)的平均分,而是要算出所有分数的整体平均值(也就是所有分数的总和除以分数的总个数),就像你举的例子76 / 48 = 1.5这样,最后保留一位小数。

你当前的代码逻辑是遍历每行、计算每行的平均分,这和你的需求不符。我们需要调整思路:遍历整个二维数组的每一个元素,累加总和同时统计总个数,最后再计算平均值。

修改后的代码示例

public void calculateOverallAverage() throws FileNotFoundException { 
    File infile = new File("qdata.txt"); 
    Scanner sc = new Scanner(infile); 
    
    // 假设你的二维数组arr已经正确从文件中读取填充完毕
    double totalSum = 0.0;
    int totalCount = 0;

    // 遍历整个二维数组的每一个元素
    for (int row = 0; row < arr.length; row++) { 
        for (int col = 0; col < arr[row].length; col++) { 
            totalSum += arr[row][col];
            totalCount++; // 统计总共有多少个分数
        } 
    } 

    // 计算整体平均值,保留1位小数
    double overallAverage = totalSum / totalCount;
    // 使用格式化输出确保结果保留一位小数
    System.out.printf("Overall Student Average is: %.1f%n", overallAverage);
}

关键调整说明

  • 替换了原来的rowNum为totalSum(累加所有分数的总和)和totalCount(统计所有分数的数量)
  • 移除了每行循环后计算平均分的逻辑,改为遍历完所有元素后再计算整体平均值
  • 使用System.out.printf来格式化输出,确保结果保留1位小数,比直接拼接字符串更可靠

另外补充一点:如果你的arr二维数组还没有从文件中读取填充,那你需要先完成这一步——比如先读取文件的行数和列数,初始化数组,再逐行读取分数填充进去。不过从你现有的代码来看,应该已经处理了数组填充的部分,所以上面的代码可以直接适配你的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:34:35