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

Java读取文本文件数字到List<Integer>时多位数拆分问题求助

问题解决:读取文件数字时多位数被拆分的问题

问题分析

你的核心问题是用split("")把字符串拆成了单个字符,这直接导致多位数被拆成单个数字。而你尝试的split(",")或split(", ")无效,是因为没处理文件中的换行符和多余空格——比如换行处的数字之间没有逗号分隔,split(", ")无法识别,会把跨行的数字(如7\n1)当成一个字符串,转int时触发异常。

解决方案

方案1:基于你的代码修改拆分规则

把拆分逻辑改成用正则表达式匹配所有非数字的分隔符(逗号、空格、换行等),这样不管是哪种分隔符都能正确拆分出完整数字:

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class ReadFile {

    public void readTestCase(String files) throws IOException {

        File file = new File(files);
        byte[] bytes = new byte[(int) file.length()];
        FileInputStream fis = new FileInputStream(file);
        fis.read(bytes);
        fis.close();
        // 用正则匹配逗号、任意空白字符(空格、换行等)作为分隔符,多个连续分隔符视为一个
        String[] valueStr = new String(bytes).trim().split("[,\\s]+");
        List<Integer> arr = new ArrayList<>();

        for (String s : valueStr) {
            // 拆分后的都是纯数字字符串(空串已被trim和split处理),可直接转换
            arr.add(Integer.parseInt(s));
        }

        System.out.println(arr);
    }
}

方案2:更简洁优雅的文件读取方式

用Files.readAllLines读取所有行,再统一处理,代码更易维护:

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class ReadFile {

    public void readTestCase(String filePath) throws IOException {
        // 读取所有行并合并成一个字符串
        String content = Files.readAllLines(Paths.get(filePath))
                .stream()
                .collect(Collectors.joining(" "));
        
        // 用正则拆分所有非数字分隔符
        String[] valueStr = content.split("[,\\s]+");
        List<Integer> arr = new ArrayList<>();
        
        for (String s : valueStr) {
            arr.add(Integer.parseInt(s));
        }
        
        System.out.println(arr);
    }
}

运行结果

两种方案都会输出你期望的结果:

[2, 7, 1, 0, 24, 2, 3, 0, 6, 3, 4, 0, 2, 1]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:50:23