Java读取number.dat文件计算整数平均值代码问题求助
问题分析
- 现有代码逻辑错误:
sum += 1仅实现了文件行数统计,没有累加文件内整数的实际值,也没有统计整数总数量,无法完成平均值计算 - 读取逻辑缺陷:仅按行读取但未解析行内容的整数,若单行存在多个整数会漏算数据
- 路径与文件名不符:代码中硬编码的文件名为
number.dat.txt,与需求的number.dat不一致,可根据实际存储情况调整
修正后可运行代码
import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class AverageOfNumbers { public static void main(String[] args) { // 替换为你本地number.dat文件的实际存储路径 File calFile = new File("C:\\Users\\Tyrese\\JAVA 2\\Chapter 10\\number.dat"); int sum = 0; int count = 0; try (Scanner bot = new Scanner(calFile)) { // 自动识别所有整数,适配空格、换行等任意分隔格式 while (bot.hasNextInt()) { sum += bot.nextInt(); count++; } if (count == 0) { System.out.println("文件中无有效整数可计算"); } else { double average = (double) sum / count; System.out.println("所有整数总和:" + sum); System.out.println("整数总个数:" + count); System.out.println("平均值:" + average); } } catch (FileNotFoundException e) { System.out.println("未找到指定文件,请检查路径配置是否正确"); } } }
代码说明
- 新增
count变量统计有效整数总数,用于后续平均值计算 - 改用
hasNextInt()判断整数输入,自动跳过空格、换行等分隔符,支持单行多数字、多行多数字的存储格式 - 计算平均值时先将sum强转为double类型,避免整数除法丢失小数精度
- 增加try-with-resources语法自动关闭Scanner资源,无需手动释放
- 增加异常捕获和空数据判断,输出更友好的提示信息
内容的提问来源于stack exchange,提问作者tyrese
相关产品推荐
相关产品推荐

