2015-01-09 3 views
0

Я пытаюсь загрузить данные из файла свойств и у меня есть следующий код:ParseInt в Java приводит к NumberFormatException

int minute = Integer.parseInt(prop.getProperty("delay")); 
int hour = Integer.parseInt(prop.getProperty("period")); 

и в то время как первая линия работает просто отлично, второй один, где я пытаюсь загрузить переменную int, выдает исключение NumberFormatException. Конкретное сообщение об исключении:

java.lang.NumberFormatException: For input string: "1 " 
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
    at java.lang.Integer.parseInt(Integer.java:580) 
    at java.lang.Integer.parseInt(Integer.java:615) 

В настоящее время в моих свойствах файла значение задержки 1 и период 5.

И когда я запускаю эту программу и печатает значение минуты и часа он работает нормально , но в моей консоли Tomcat возникает исключение. Помогите мне решить эту проблему? заранее спасибо!

+0

какое значение имеют возврат из prop.getProperty ("задержка") и prop.getProperty ("период") ??? –

+2

Проверьте, что у вас есть дополнительное пространство в «1» –

+0

Задержка равна 1, а период - 5. @YeWin. Но я уверен, что после этих значений в моем конфигурационном файле нет лишнего места. – BornForJava

ответ

1

В вашей собственности, похоже, есть пробег (начиная с "1 " в Exception). Вы можете позвонить String.trim(), который Возвращает копию строки, с опущенными пропущенными пробелами и прокруткой. Что-то вроде

int minute = Integer.parseInt(prop.getProperty("delay").trim()); 
int hour = Integer.parseInt(prop.getProperty("period").trim()); 
1

Попробуйте это,

String delay = prop.getProperty("delay"); 
    String period = prop.getProperty("period"); 
    int minute = Integer.parseInt((delay != null && !delay.trim().isEmpty()) ? delay : "0"); 
    int hour = Integer.parseInt((period != null && !period.trim().isEmpty()) ? period : "0"); 

prop.getProperty("delay") или prop.getProperty("period") может быть нулевым или пустым, так что вы должны проверить, является ли строка форматирования не должен быть нулевым или пустым и не содержит каких-либо пространство.

0

Попробуйте заменить не-числовые значения:

int minute = Integer.parseInt(prop.getProperty("delay").replaceAll("\\D","")); 
int hour = Integer.parseInt(prop.getProperty("period").replaceAll("\\D","")); 
Смежные вопросы