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

