2013-05-17 4 views
1

Я пытаюсь проанализировать строку до значения int. Но я получаю исключение NumberFormat. Я пишу код ниже:Получение исключения NumberFormat в BlackBerry

 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 больше Integer.MAX_VALUE от 2147483647. Вместо этого используйте Long. (BigInteger не вариант для Blackberry)

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

Если ваши номера являются _very_ большими, тогда вам будет лучше обслуживать каждую цифру каждый раз, используя 'Character.isDigit' – Reimeus

+0

Да, когда я даю 1234567890, он отображает правильное значение –

 Смежные вопросы

  • Нет связанных вопросов^_^