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

Java如何读取每行含2/4个数值的文件并将字符串数组转为数值传入类方法

实现方案

你当前代码里的split()方法参数写法有误,split()需要传入分隔符规则,要按空格拆分应该用inData.split("\\s+"),该规则可以匹配1个及以上的空白字符,兼容多个空格、制表符分隔的场景,也能自动过滤行首行尾的多余空格。

完整实现逻辑如下:

  • 增加空行判断,跳过文件中的空白行
  • 把拆分后的字符串数组逐个转换为目标数值类型(以下示例以整数为例,需要浮点数可自行替换转换方法)
  • 捕获数值转换异常,避免非数值内容导致程序终止
  • 根据数值数组长度调用对应处理方法
while(myReader.hasNextLine()) {
    String inData = myReader.nextLine();
    // 跳过空行
    if (inData.trim().isEmpty()) {
        continue;
    }
    // 按任意空白字符拆分字符串
    String[] dataStrArr = inData.split("\\s+");
    int[] numArr = new int[dataStrArr.length];
    try {
        // 字符串转整数,需要浮点数的话替换为Double.parseDouble()即可
        for (int i = 0; i < dataStrArr.length; i++) {
            numArr[i] = Integer.parseInt(dataStrArr[i]);
        }
        // 根据数值个数调用对应方法
        if (numArr.length == 2) {
            // 替换为你自己的2参数处理方法
            handleTwoValue(numArr[0], numArr[1]);
        } else if (numArr.length == 4) {
            // 替换为你自己的4参数处理方法
            handleFourValue(numArr[0], numArr[1], numArr[2], numArr[3]);
        } else {
            // 不符合格式的行可以按需加日志或跳过
            System.out.println("跳过不符合长度要求的行:" + inData);
        }
    } catch (NumberFormatException e) {
        // 处理行内存在非数值的异常情况
        System.out.println("行内容存在非数值,已跳过:" + inData);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:18:03