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.

将有效输入传递给该方法,如文档所述:仅包含数字的文本,以及前面可选的 -/+