我承认,我被难住了。这不是 double 。它不在整数范围之外。这不是南。据我所知,它不是任何形状或形式的非整数。
为什么会出现该错误?
这是导致它的代码:
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: For input string: "5000"
这是我想要的数字。
我也试过
Integer portNum = Integer.parseInt(bufferedReader.readLine());
但这也没有用。 valueOf() 也没有。
最佳答案
很可能在您的文件行中某处有一些不可打印的字符。请考虑以下示例(已在 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)
此处字符串末尾包含“bell”字符。当它没有打印在异常文本中时,它会使解析失败。我想你有类似的东西。验证这一点的最简单方法是检查
String line = bufferedReader.readLine();
System.out.println("line length: " + line.length());
4
以外的值将支持我的想法。
关于java - Integer.parseInt 失败 'For input string: "500 0"',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46634923/