java - Integer.parseInt 失败 'For input string: "500 0"'

标签 java int bufferedreader filereader parseint

我承认,我被难住了。这不是 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/

相关文章:

java - 异常调度输入事件

Java JFrame 布局

java - Java 中的链接输入流

java - Bufferedreader 不能一次读取整行?

java - 使用 element.click() 时出现 WebDriverException 'unknown error: no element reference returned by script'

java - 如何使用 dialogflow.v2beta1 创建默认响应

python - 调用函数时“int”对象不可调用

go - 如何正确实例化 os.FileMode

java - 不兼容类型 : int and <nulltype>

java - 读取字符后无法在不添加额外的 readLine 的情况下进行下一个输入