2017-10-08 107 views
0

我承認它,我很難過。這不是雙重的。它不在整數範圍之外。這不是南。就我所知,這不是一個非整數形式或形式。Integer.parseInt失敗'對於輸入字符串:「5000」'

爲什麼我會得到那個錯誤?

下面是導致它的代碼:

String filename = "confA.txt"; 

//Make a new filereader to read in confA 
FileReader fileReader = new FileReader(filename); 

//Wrap into a bufferedReader for sanity's sake 
BufferedReader bufferedReader = new BufferedReader(fileReader); 

//Get the port number that B is listening to 
int portNum = Integer.parseInt(bufferedReader.readLine()); 

它未能在最後一行,他說:

java.lang.NumberFormatException:對於輸入字符串: 「5000」

這是我想要的數字。

我也嘗試

Integer portNum = Integer.parseInt(bufferedReader.readLine()); 

但是,這也不能工作。 valueOf().

+9

嘗試打印'Arrays.toString(line.toCharArray())'(其中行是您從閱讀器讀取的內容)。字符串中可能包含不可打印的字符。 –

+1

@AndyTurner這似乎是......不知何故。 [,5,0,0,0]被打印。 –

+0

感謝您的幫助,非常感謝。它看起來像原來的文本文件有點不對勁,即使我看不到它。我重寫了它,現在它工作得很好。 :) –

回答

2

很可能在文件行中有某個不可打印的字符。請考慮以下示例(這是在Java 9 jshell中測試的)

jshell> String value = "5000\u0007"; 
value ==> "5000\007" 

jshell> Integer.parseInt(value); 
| java.lang.NumberFormatException thrown: For input string: "5000" 
|  at NumberFormatException.forInputString (NumberFormatException.java:65) 
|  at Integer.parseInt (Integer.java:652) 
|  at Integer.parseInt (Integer.java:770) 
|  at (#15:1) 

這裏的字符串在結尾包含「鍾」字符。它使得解析失敗,而不是在例外文本中打印。我覺得你有類似的東西。驗證此最簡單的方法是檢查

String line = bufferedReader.readLine(); 
System.out.println("line length: " + line.length()); 

4之外的值將支持我的想法。

相關問題