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

Java中拆分数字对字符串并生成Velocity列表的技术求助

问题分析与代码修正

你的思路完全没问题:先按空格拆分得到单个数字对,再拆分每个数字对里的两个数,最后传入Velocity.pair。但现有代码有两个关键问题:

  • 没有对每个数字对字符串按逗号拆分,直接用Integer.parseInt处理带逗号的字符串会抛出NumberFormatException
  • 两次都用同一个number变量解析,得到的两个int值完全一样,根本没拿到真正的两个数字

修正后的代码

// 假设data是你的原始字符串,比如"45,500 46,500 47,500"
String[] numberPairs = data.split("\\s+");
List<Velocity> velocities = new ArrayList<>();

for (String pair : numberPairs) {
    // 按逗号拆分单个数字对,得到两个数字字符串
    String[] parts = pair.split(",");
    // 确保拆分后确实有两个元素,避免数组越界
    if (parts.length == 2) {
        try {
            int firstNum = Integer.parseInt(parts[0].trim());
            int secondNum = Integer.parseInt(parts[1].trim());
            velocities.add(Velocity.pair(firstNum, secondNum));
        } catch (NumberFormatException e) {
            // 可以在这里处理数字格式错误的情况,比如打印日志
            System.err.println("无效的数字格式: " + pair);
        }
    } else {
        // 处理不符合"数字,数字"格式的字符串
        System.err.println("无效的数字对格式: " + pair);
    }
}

关键修改点说明

  • 将变量名从numbers改为numberPairs,更贴合语义,避免混淆
  • 对每个pair字符串执行split(","),拆分出两个数字的字符串
  • 添加了parts.length == 2的判断,防止遇到格式错误的字符串导致数组越界
  • 用parts[0]和parts[1]分别解析两个数字,同时调用trim()处理可能存在的空格(比如如果数字对里有"45 , 500"这种情况)
  • 完善了异常处理,捕获NumberFormatException并给出提示,避免程序崩溃

这样处理后,就能得到你想要的包含Velocity.pair(45,500)、Velocity.pair(46,500)、Velocity.pair(47,500)的列表了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 07:37:44