我手头的任务是能够根据地址中的文本文件处理行,并将它们分类为各自的类别,“东”、“西”、“百老汇”、“大道”和“坏 id”。下面的代码 100% 正确执行此操作,直到它遇到包含双逗号的格式错误的行,而我可以用单数逗号替换所有双逗号,这不能完全解决问题,因为该行将被视为“格式错误”和然后应该将其添加到 badId 的类别中,但它会导致NumberFormatException完全错误和下面的代码。我想知道是否有可能以一种不会导致此异常的方式忽略双逗号,但仍然能够解析文件的其余部分,将这一行按预期添加到 badId 的数组中。文本文件读取自123-ABC-4567, 15 W. 15th St., 50.1456-BGT-9876,22 Broadway,24QAZ-456-QWER, 100 East 20th Street,50Q2Z-457-QWER, 200 East 20th Street, 49678-FGH-9845 ,,45 5th Ave, 12.2,678-FGH-9846 ,45 5th Ave, 12.2123-ABC-9999, 46 Foo Bar, 220.0347-poy-3465, 101 B'way,24
1 回答
慕神8447489
TA贡献1780条经验 获得超1个赞
这里的问题在于:
Float f = Float.valueOf(result[2]);
在这里,您尝试将第二个索引的值转换为Float
.
在前四行数据中,转换没有问题,因为被转换的值是50.1,24,50
.
但是,由于实际上将被解析为空字符串的“双逗号”,现在转换为 on 45 5th Ave
,然后将抛出NumberFormatException
.
在关于过滤出数组中的空值的评论中的查询后添加以下部分:
您可以使用以下(Java 8 及更高版本)过滤掉数组中的空值:
String[] filteredResult = Arrays.stream(result).filter(o -> !o.isEmpty()).toArray(String[]::new);
话虽如此..此解决方案专门针对您在这种情况下面临的问题,并且可能不是一个好的解决方案。
实际的解决方案是在开始解析数据之前实际清理数据。
添加回答
举报
0/150
提交
取消