Java中的parseInt导致NumberFormatException

时间:2015-01-09 04:32:33

标签: 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日志控制台中发生异常。请帮帮我解决这个问题?提前谢谢!

3 个答案:

答案 0 :(得分:1)

您的媒体资源中似乎有一个尾随空白区域(因为您在"1 "中获得Exception)。您可以调用String.trim() 返回字符串的副本,省略前导和尾随空格。像

这样的东西
int minute = Integer.parseInt(prop.getProperty("delay").trim());
int hour = Integer.parseInt(prop.getProperty("period").trim());

答案 1 :(得分: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")可能为null或为空,因此您必须检查格式化字符串是否应为null或为空且不包含任何空格。

答案 2 :(得分:0)

尝试替换非数字值:

int minute = Integer.parseInt(prop.getProperty("delay").replaceAll("\\D",""));
int hour = Integer.parseInt(prop.getProperty("period").replaceAll("\\D",""));