2013-05-17 31 views
1

我想解析一个字符串为int值。但是我得到一个NumberFormat异常。我写了下面的代码:在BlackBerry中获取NumberFormat例外

 Logger.out("Myprof", "Contact "+strContact); 
    try{ 
     i = Integer.parseInt(strContact.trim()); 
     Logger.out("Myprof", "Contact8686866  "+i); 
    } 
    catch(Exception e) 
    { 
     Logger.out("Myprof", "exce "+e.toString()); 
    } 

现在,当我路过象下面这样:

i = Integer.parseInt("11223344"); 

我得到了我价值11223344.

我哪里做错了?请帮忙。

+4

它是可能的'strContact'包含非数字字符或为空。在尝试解析它之前输出变量。完整的堆栈跟踪告诉你什么? – Reimeus

+0

strContact是一个字符串。它在这一行给出适当的值:Logger.out(“Myprof”,“Contact”+ strContact); –

+0

它在这一行中给我这个结果:Myprof: - :contact 9875566521 –

回答

4

9875566521的输入值大于2147483647Integer.MAX_VALUE。请使用Long。 (BigInteger不是黑莓选项)

Long number = Long.parseLong(strContact); 
Logger.out("Myprof", "Contact8686866 " + number); 

如果预期的输入数字是大于Long.MAX_VALUE,然后Character.iDigit可以用来作为一种替代验证值:

private static boolean isValidNumber(String strContact) { 
    for (int i = 0; i < strContact.length(); i++) { 
     if (!Character.isDigit(strContact.charAt(i))) { 
     return false; 
     } 
    } 

    return true; 
} 
+0

BigInteger不适用于BlackBerry。所以如果我将输入值为21345,那么它应该能够解析。我会试试这个。 –

+0

如果你的号码非常大,那么你会更好地服务检查每个单独的数字使用'Character.isDigit' – Reimeus

+0

是的,当我给1234567890,它显示正确的价值 –