Integer.parseInt 将所有内容转换为零
Integer.parseInt converts everything to zero
大家好,我是 java 的新手,我有一个问题。我接受一个String类型的数字,然后我把它写入txt变量,然后我覆盖它并添加“\n”,然后我尝试将它转换为int类型,但无论是什么数字,它总是结果为零。
BufferedReader in = new BufferedReader(new InputStreamReader(clientConn.getInputStream()));
String txt = in.readLine();
txt = txt + "\n";
int number = Integer.parseInt(txt);
如果我尝试 运行 包含这些代码行的单独 class,则会抛出错误。
Exception in thread "main" java.lang.NumberFormatException: For input string: "1
"
所以我 send.Always 在 int number = Integer.parseInt(txt);
行发誓的任何数字。
告诉我如何解决这个问题。
您传递了无效的输入
如注释所示,您将 newline 添加到被解析为整数的文本中,从而掺假了输入:
txt = txt + "\n";
所以你违反了Integer.parse
方法的约定。引用 Javadoc:
… The characters in the string must all be decimal digits…
您的解析尝试抛出 NumberFormatException
,因为您向该方法传递了错误的输入。
int good = Integer.parseInt( "42" ) ;
int bad = Integer.parseInt( "666" + "\n" ) ; // Throws a `NumberFormatException` because of the appended newline.
看到code run live at IdeOne.com。
您问的是:
Tell me how to solve this problem.
将有效输入传递给该方法,如文档所述:仅包含数字的文本,以及前面可选的 -
/+
。
大家好,我是 java 的新手,我有一个问题。我接受一个String类型的数字,然后我把它写入txt变量,然后我覆盖它并添加“\n”,然后我尝试将它转换为int类型,但无论是什么数字,它总是结果为零。
BufferedReader in = new BufferedReader(new InputStreamReader(clientConn.getInputStream()));
String txt = in.readLine();
txt = txt + "\n";
int number = Integer.parseInt(txt);
如果我尝试 运行 包含这些代码行的单独 class,则会抛出错误。
Exception in thread "main" java.lang.NumberFormatException: For input string: "1 "
所以我 send.Always 在 int number = Integer.parseInt(txt);
行发誓的任何数字。
告诉我如何解决这个问题。
您传递了无效的输入
如注释所示,您将 newline 添加到被解析为整数的文本中,从而掺假了输入:
txt = txt + "\n";
所以你违反了Integer.parse
方法的约定。引用 Javadoc:
… The characters in the string must all be decimal digits…
您的解析尝试抛出 NumberFormatException
,因为您向该方法传递了错误的输入。
int good = Integer.parseInt( "42" ) ;
int bad = Integer.parseInt( "666" + "\n" ) ; // Throws a `NumberFormatException` because of the appended newline.
看到code run live at IdeOne.com。
您问的是:
Tell me how to solve this problem.
将有效输入传递给该方法,如文档所述:仅包含数字的文本,以及前面可选的 -
/+
。