Java 中的 parseInt 结果为 NumberFormatException
parseInt in Java results to 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 日志控制台中发生上述异常。请帮我解决这个问题?提前致谢!
您的 属性 中似乎有尾随白色 space(因为您在 Exception
中得到 "1 "
)。您可以调用 String.trim()
which Returns 字符串的副本,省略前导和尾随白色space。像
int minute = Integer.parseInt(prop.getProperty("delay").trim());
int hour = Integer.parseInt(prop.getProperty("period").trim());
试试这个,
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 或空且不包含任何 space。
尝试替换非数值:
int minute = Integer.parseInt(prop.getProperty("delay").replaceAll("\D",""));
int hour = Integer.parseInt(prop.getProperty("period").replaceAll("\D",""));
我正在尝试从属性文件加载信息,我有以下代码:
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 日志控制台中发生上述异常。请帮我解决这个问题?提前致谢!
您的 属性 中似乎有尾随白色 space(因为您在 Exception
中得到 "1 "
)。您可以调用 String.trim()
which Returns 字符串的副本,省略前导和尾随白色space。像
int minute = Integer.parseInt(prop.getProperty("delay").trim());
int hour = Integer.parseInt(prop.getProperty("period").trim());
试试这个,
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 或空且不包含任何 space。
尝试替换非数值:
int minute = Integer.parseInt(prop.getProperty("delay").replaceAll("\D",""));
int hour = Integer.parseInt(prop.getProperty("period").replaceAll("\D",""));