2013-10-10 2 views
1

Этот код должен проверять входные данные из findActions() метод:java.lang.NumberFormatException: Для ввода строки: «10,0»

try { 
    System.out.println(findActions(lookingArea.substring(0, right)));// always printing valid number string 
    Integer.parseInt(findActions(lookingArea.substring(0, right)));// checking for number format 
} 
catch(NumberFormatException exc) { 
    System.out.println(exc); 
} 

Но я всегда java.lang.NumberFormatException: For input string: "*number*" это так странно, так как проверка с System.out.println(findActions(lookingArea.substring(0, right)));,

*number* я как 10,0

+5

10.0 не целочисленный, используйте Double.parseDouble ... Есть много вопросов о SO с аналогичной проблемой. – kosa

+1

'10.0' не является' int'. –

+0

Работа. Спасибо. – George

ответ

4

Integer.parseInt не ожидает . характера. Если вы уверены, что он может быть преобразован в int, а затем выполните одно из следующих действий:

  1. Устранить ".0" от конца строки перед разбором, или
  2. Зова Double.parseDouble и брось результат до int.

Цитирование сцепленные Javadocs выше:

Символы в строке должны все быть десятичными цифрами, за исключением того, первый символ может быть ASCII знак минус «-» («\ u002D») до указывают отрицательное значение или знак ASCII plus '+' ('\ u002B') на указывают положительное значение.

2

10.0 не является целым числом. Вместо этого вы можете использовать:

int num = (int) Double.parseDouble(...); 
Смежные вопросы