我手頭的任務是能夠根據地址中的文本文件處理行,并將它們分類為各自的類別,“東”、“西”、“百老匯”、“大道”和“壞 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
提交
取消