2017-10-29 143 views
1

我想讀一個特徵是從一個文件中的一個整數閱讀的非打印字符和我收到的NumberFormatException的異常:從文件

Java.lang.NumberFormatException: For input string: "4
" java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) at java.lang.Integer.parseInt(Integer.java:458) at java.lang.Integer.valueOf(Integer.java:554) at Main.main(Main.java:9)

我敢肯定它來自的文件,因爲只有當我將文本複製到文件時纔可以複製,手動輸入時它會正確解析。 我的問題是:我怎樣才能避免這個異常,並將「4」解析爲變量?在這裏我分析它的線路是:int m = Integer.valueOf(inputFile.readLine());

+0

在這個文件中是4自己的行嗎?如果是這樣,那個不可打印的字符可能是在Windows系統中使用的回車符。 – eozd

+0

這只是4,沒有引號,控制檯把它們之間的數字。是的,它可能是回車,但我怎樣才能刪除它?因爲我無法引用未打印的實際字符。 – MMMM

+1

嘗試使用'int m = Integer.valueOf(inputFile.readLine()。replaceAll(「[^ \\ d] +」,「」));' –

回答

1

似乎有在你輸入一些特殊字符,避免這個問題,你可以使用:

int m = Integer.valueOf(inputFile.readLine().replaceAll("[^\\d]+", "")); 

這意味着更換空

任何非數字