为什么我的代码抛出NumberFormatException?

时间:2014-06-15 14:34:20

标签: java numberformatexception

我从自定义日志中获得此异常:

java.lang.NumberFormatException: Invalid int: "12px"
    at java.lang.Integer.invalidInt(Integer.java:137)
    at java.lang.Integer.parse(Integer.java:374)
    at java.lang.Integer.parseInt(Integer.java:365)
    at java.lang.Integer.parseInt(Integer.java:331)

然后我检查相关代码,但我不明白为什么会发生这种异常:

String fontSize = styles.getStyle("font-size");
if (fontSize.endsWith("px")) {
    fontSize = fontSize.substring(0, fontSize.length() -2);
}
setWeight(Integer.parseInt(fontSize));

谢谢!

这是我的修复:

try {
    setWeight(Integer.parseInt(fontSize));
} catch (NumberFormatException e) {
    setWeight(12);
}

1 个答案:

答案 0 :(得分:1)

这个怎么样:

fontSize = fontSize.replaceAll("[^\\d]", "");

它会将所有非数字字符替换为''(无),剩下的所有字符将为12。 你甚至不必测试你的字符串是否以'px'结尾,因为不会触及没有任何非数字字符的字符串。
总之它会给你这个:

String fontSize = styles.getStyle("font-size");
fontSize = fontSize.replaceAll("[^\\d]", "");
setWeight(Integer.parseInt(fontSize));