亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java不會在雙逗號“格式錯誤的行”上崩潰

Java不會在雙逗號“格式錯誤的行”上崩潰

catspeake 2022-06-04 15:41:11
我手頭的任務是能夠根據地址中的文本文件處理行,并將它們分類為各自的類別,“東”、“西”、“百老匯”、“大道”和“壞 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);

話雖如此..此解決方案專門針對您在這種情況下面臨的問題,并且可能不是一個好的解決方案。

實際的解決方案是在開始解析數據之前實際清理數據。


查看完整回答
反對 回復 2022-06-04
  • 1 回答
  • 0 關注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號