Java不会在双逗号“格式错误的行”上崩溃

我手头的任务是能够根据地址中的文本文件处理行,并将它们分类为各自的类别,“东”、“西”、“百老汇”、“大道”和“坏 id”。下面的代码 100% 正确执行此操作,直到它遇到包含双逗号的格式错误的行,而我可以用单数逗号替换所有双逗号,这不能完全解决问题,因为该行将被视为“格式错误”和然后应该将其添加到 badId 的类别中,但它会导致NumberFormatException完全错误和下面的代码。我想知道是否有可能以一种不会导致此异常的方式忽略双逗号,但仍然能够解析文件的其余部分,将这一行按预期添加到 badId 的数组中。


文本文件读取自


123-ABC-4567, 15 W. 15th St., 50.1

456-BGT-9876,22 Broadway,24

QAZ-456-QWER, 100 East 20th Street,50

Q2Z-457-QWER, 200 East 20th Street, 49

678-FGH-9845 ,,45 5th Ave, 12.2,

678-FGH-9846 ,45 5th Ave, 12.2


123-ABC-9999, 46 Foo Bar, 220.0

347-poy-3465, 101 B'way,24


catspeake
浏览 101回答 1
1回答

慕神8447489

这里的问题在于: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);话虽如此..此解决方案专门针对您在这种情况下面临的问题,并且可能不是一个好的解决方案。实际的解决方案是在开始解析数据之前实际清理数据。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java