2014-04-12 29 views
0

我想通过使用Integer.parseInt()将字符串转换为int - 这工作正常的输入字符串“9”,但失败时,输入字符串达到10:Integer.parseint()失败,输入字符串大于9

System.out.println("PROBLEM INT Chars:" + bf2Tokens[0].trim()); 
System.out.println("PROBLEM INT Bytes:" + bf2Tokens[0].trim().getBytes()); 
int n = Integer.parseInt(bf2Tokens[0].trim()); 

输出:

PROBLEM INT Chars:10 
PROBLEM INT Bytes:[[email protected] 
Exception in thread "main" java.lang.NumberFormatException: For input string: "10" 
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
at java.lang.Integer.parseInt(Integer.java:492) 
at java.lang.Integer.parseInt(Integer.java:527) 
at Index.main(Index.java:281) 

我还试图Integer.valueOf()没有成功。

有什么建议可能在这里发生什么?

很多谢谢。

+0

好'Integer.parseInt(“10”)'工作正常,所以你的字符串可能除了“10”之外还有其他垃圾。 – arshajii

+3

请显示一个简短但完整的程序来展示问题。我强烈怀疑你在那里有一些不可打印的字符。 –

+0

您的代码中没有显示错误。请解压缩您的问题 - 创建并发布[最小示例程序](http://stackoverflow.com/help/mcve)。 –

回答

0

我编译并运行了此代码,该代码由我发布,因为您发布的代码不完整。

public class Test { 
    public static void main(String[] args) { 
     String[] bf2Tokens = new String[] { "10" }; 

     System.out.println("PROBLEM INT Chars:" + bf2Tokens[0].trim()); 
     System.out.println("PROBLEM INT Bytes:" + bf2Tokens[0].trim().getBytes()); 
     int n = Integer.parseInt(bf2Tokens[0].trim()); 

     System.out.println("n: " + n); 
    } 
} 

它运行无异常,我得到下面的输出:

PROBLEM INT Chars:10 
PROBLEM INT Bytes:[[email protected] 
n: 10 

正如你所看到的,我设置bf2Tokens[0]值“10”,它完美的作品。因此,与您的想法相反,您的程序中的bf2Tokens[0]不等于“10”。它可能看起来像10,但它不是。尝试在它周围打印报价,如下所示:

System.out.println("PROBLEM INT Chars:'" + bf2Tokens[0].trim() + '); 

这将有助于揭示任何前导字符或结尾字符。我也建议输出字符串的长度。

System.out.prinln("length: " + bf2Tokens[0].trim().length()); 

由于您使用的包装你.trim()解析字符串,显然你没有前导或尾随空间。 trim的javadoc表示任何大于'\ u0020'的字符都会导致返回原始字符串。因此,你可能有在开头或结尾比“\ u0020”

1

问题更大的值与特殊(非打印)字符

这里是从你的问题本身的输出。请再看看bf2Tokens[0]的值。

字符串中有一些特殊(不可打印)字符,如您在以下输出中所显示的那样。

PROBLEM INT Chars:1�0 
PROBLEM INT Bytes:[[email protected] 
Exception in thread "main" java.lang.NumberFormatException: For input string: "1�0" 
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
at java.lang.Integer.parseInt(Integer.java:492) 
at java.lang.Integer.parseInt(Integer.java:527) 
at Index.main(Index.java:281) 
相关问题