2013-05-17 65 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,它顯示正確的價值 –