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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 09:36:08