2013-03-21 62 views
3

我試圖讀取一個數字文本文件作爲雙數組和後各種方法(通常導致輸入格式異常)我得出的結論是文本我正在嘗試閱讀的文件與它的分隔不一致。閱讀格式不一致的文本文件的建議方法

大部分文本格式的格式爲「0.000,0.000」,所以我一直使用掃描儀和useDelimiter(「,」)來讀取每個值。

事實證明,雖然(這是一個大數字文件),某些格式的格式爲「0.000 0.000」(在我假設的行的末尾),當然這會產生輸入格式異常。

這是一個開放的問題,我是一個非常基礎的Java程序員,所以我只想看看是否有任何建議/方法來執行此操作。 Scanner是正確的課程嗎?

謝謝你的時間!

回答

2

以文本逐行讀取文件。然後分割線分成部​​分:

String[] parts = line.split("[ ,]");

現在遍歷部分,並呼籲Double.parseDouble()的每一個部分。

+0

+1:我同意。這可能是最好和最簡單的方法。 – carlspring 2013-03-21 13:06:33

+0

只需設置合適的分隔符正則表達式,然後使用scanner.nextDouble()繼續讀取雙精度就簡單多了。 – 2013-03-21 13:12:15

+0

我剛纔想這medthod但我得到異常: 找不到符號 符號:方法拆分(java.lang.String中) 位置:類java.lang.String [] \t的String [] pixelvaluesparts = pixelvaluesstr。分裂(」[ ,]」); 任何想法?? – bateman 2013-03-21 14:13:04

1

掃描儀允許任何Java Regex Pattern作爲分隔符。您應該能夠通過執行以下操作使用任何數量的分隔符:

scanner.setDelimiter("[,\\s]"); // Will match commas and whitespace 
0

我想,而不是使其成爲一個單獨的回答進行評論這一點,但我的名聲太低。道歉,亞歷克斯。

您提到有在不同實例中使用了兩個不同的分隔字符,而不是兩者的組合作爲單個分隔符。 可以將垂直條用作正則表達式中的邏輯OR。

scanner.setDelimiter("[,|\\s]"); //Will match commas or whitespace as appropriate 

一行一行:

String[] parts = line.split("[,|\\s]");