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

Java如何读取TXT文件单行内容并分割值存入数组?

代码问题分析与修正方案

原代码存在的问题

  • 前置读取逻辑浪费唯一一行内容:你在进入while循环前已经调用myReader.nextLine()读取了文件唯一的一行内容,后续hasNextLine()判断会返回false,循环内的分割、存储逻辑完全不会执行,最终拿不到目标数组。
  • 分割规则不匹配内容格式:直接用split(",")分割会导致分割后的元素自带前导空格(比如" 5"),无法直接作为数字使用。
  • 数组打印逻辑错误:直接打印数组对象只会输出数组的内存地址,看不到实际存储的元素。
  • 代码结构不完整:缺少异常捕获的catch块,也没有手动关闭Scanner资源,存在资源泄漏风险。

修正后的可运行代码

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ReadTxt {
    public static void main(String[] args) {
        // 数组声明放在循环外,方便后续业务逻辑使用
        String[] values = null;
        Scanner myReader = null;
        try {
            File cars = new File("cars.txt");
            myReader = new Scanner(cars);
            // 文件仅有一行,无需循环读取,判断存在内容后直接处理即可
            if (myReader.hasNextLine()) {
                String data = myReader.nextLine();
                // 按", "匹配分割规则,避免生成带空格的元素
                values = data.split(", ");
                // 遍历打印数组元素验证结果
                for (String val : values) {
                    System.out.print(val + " ");
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            // 手动关闭IO资源避免泄漏
            if (myReader != null) {
                myReader.close();
            }
        }
    }
}

额外扩展:转整型数组方案

如果需要将内容存储为整型数组,可以在分割后增加类型转换逻辑:

int[] intValues = new int[values.length];
for (int i = 0; i < values.length; i++) {
    intValues[i] = Integer.parseInt(values[i]);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:39:04