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

如何使用BufferedReader同时读取字符串与整数?代码问题排查

关于BufferedReader同时处理字符串与整数的问题及代码排查

能不能用BufferedReader同时处理字符串与整数?

可以。BufferedReader本身只能读取文本内容(字符串形式),但你可以将读取到的字符串通过Integer.parseInt()等方法转换为整数——因为你用BufferedWriter写入整数时,也是先把它转成了字符串(num + "\n"),文件里存储的本质都是文本,所以读取后做类型转换就能同时处理字符串和整数。

你的代码存在的问题

  • 写入时的换行符错误:代码里writer.write(" welcome");和writer.write(num + " ");是直接把换行写在字符串里,这在Java语法中是非法的,应该用转义字符\n,或者更通用的System.lineSeparator()来适配不同操作系统的换行规则,否则写入的文件内容格式会混乱,读取时无法正确按行分割。
  • 读取逻辑跳过内容且存在异常风险:你在读取时先执行了String line = reader.readLine();读取第一行,接着又执行int num = Integer.parseInt(reader.readLine());读取第二行并尝试转成整数,但你写入的第二行是字符串" welcome",这会直接抛出NumberFormatException;同时这一步跳过了第二行内容,后续循环也不会处理它。
  • 读取循环逻辑冗余且遗漏内容:你定义的num变量完全没有被使用,而且循环只处理了第一行和跳过第二行之后的内容,导致第二行丢失。
  • 资源未安全关闭:手动调用close()如果遇到异常,可能会导致流资源没有被正确释放,建议使用Java的try-with-resources语法自动管理资源。

修正后的代码示例

import java.io.*;

public class Main {
    public static void main(String[] args) {
        int[] nums = {1, 2, 3, 4, 5};
        // 写入部分:用try-with-resources自动关闭流,正确处理换行
        try (BufferedWriter writer = new BufferedWriter(new FileWriter("test.txt"))) {
            writer.write("hello");
            writer.newLine(); // 用newLine()方法写入适配系统的换行
            writer.write("welcome");
            writer.newLine();
            for (int num : nums) {
                writer.write(String.valueOf(num));
                writer.newLine();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 读取部分:按行读取,判断内容是否可转为整数
        try (BufferedReader reader = new BufferedReader(new FileReader("test.txt"))) {
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println("读取到内容:" + line);
                // 尝试将字符串转为整数,处理可能的转换失败
                try {
                    int num = Integer.parseInt(line);
                    System.out.println("转换为整数:" + num);
                } catch (NumberFormatException e) {
                    // 不是整数的情况,跳过或做其他处理
                    System.out.println("这是字符串,无需转换");
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:45:36