2017-10-08 66 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之外的值将支持我的想法。

相关问题