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

