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
相关产品推荐
相关产品推荐

