检查输入数字

时间:2012-11-27 21:01:14

标签: java exception-handling int validation

我是Java的新手。我创建了这段代码,以便检查字符串或数字的输入字段。

try {
    int x = Integer.parseInt(value.toString());
} catch (NumberFormatException nFE) {
    // If this is a string send error message
    throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR,
            "  " + findValue + " must be number!", null));
}

如何为数字创建相同的检查,但只使用if(){}而不使用try-catch?

2 个答案:

答案 0 :(得分:2)

您可以使用pattern String#matches方法: -

String str = "6";

if (str.matches("[-]?\\d+")) {
    int x = Integer.parseInt(str);
}

"[-]?\\d+"模式将匹配digits的任何序列,前面带有可选的-符号。

"\\d+"表示匹配一个或多个数字。

答案 1 :(得分:0)

如果你真的不想明确地捕获异常那么你最好做一个辅助方法。

例如

public class ValidatorUtils {

    public static int parseInt(String value) {
        try {
            return Integer.parseInt(value);
        } catch (NumberFormatException e) {
            throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR,
            "  " + findValue + " must be number!", null));
        }
    }
}

public static void main(String[] args) {

    int someNumber = ValidatorUtils.parseInt("2");
    int anotherNumber = ValidatorUtils.parseInt("nope");

}

这样你甚至不需要打扰if语句,而且你的代码不必解析整数两次。