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

修改Week2英尺转米程序实现文件读写,运行报错求助

解决英尺转米程序的文件读写报错问题

我来帮你搞定这个英尺转米的文件读写程序问题!先说说大概率导致报错的几个原因,再给你修正后的完整代码:

常见报错原因

  • 文件路径不对:如果feet.txt没放在程序运行的当前文件夹里,会直接抛出文件未找到的异常
  • 没处理IO异常:Java里文件读写操作必须显式处理IOException,不然连编译都通不过
  • 输出格式不达标:没有按要求保留1位小数,或者输出的字符串格式和示例不符
  • 文件流没正确关闭:容易造成资源泄漏,甚至导致写入的内容没完全保存到文件里

修正后的完整代码

import java.io.*;
import java.util.Scanner;

public class FeetToMetersConverter {
    public static void main(String[] args) {
        // 固定转换系数:1英尺=0.3048米
        final double FEET_TO_METERS = 0.3048;

        // 用try-with-resources自动管理文件流,不用手动关闭,避免资源泄漏
        try (Scanner inputScanner = new Scanner(new File("feet.txt"));
             PrintWriter outputWriter = new PrintWriter(new File("meters.txt"))) {

            // 循环读取文件里的每一个double数值
            while (inputScanner.hasNextDouble()) {
                double feet = inputScanner.nextDouble();
                double meters = feet * FEET_TO_METERS;

                // 严格按照要求格式化输出,保留1位小数
                outputWriter.printf("%.1f 英尺转换为 %.1f 米%n", feet, meters);
            }

            System.out.println("转换成功!结果已经写入meters.txt文件");

        } catch (FileNotFoundException e) {
            // 专门处理文件找不到的情况,给用户明确提示
            System.err.println("错误:找不到feet.txt文件!请确认它在程序运行的当前目录下。");
            e.printStackTrace();
        } catch (Exception e) {
            // 捕获其他未知异常,方便排查问题
            System.err.println("程序运行时出现意外错误:");
            e.printStackTrace();
        }
    }
}

代码关键说明

  • 自动管理文件流:try-with-resources会在代码块结束后自动关闭Scanner和PrintWriter,不用手动写close(),彻底避免资源泄漏问题
  • 异常友好处理:针对文件未找到的情况给出明确提示,其他异常也会打印堆栈信息方便调试
  • 精准格式化输出:用%.1f确保数值只保留1位小数,%n是跨平台的换行符,不管Windows还是Linux都能正确换行
  • 安全读取数据:用hasNextDouble()判断下一个内容是不是有效的double数值,避免读取到非数字内容导致程序崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:23:56