1

我是 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?

4

2 回答 2

2

您可以使用patternwithString#matches方法:-

String str = "6";

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

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

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

于 2012-11-27T21:02:35.557 回答
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 语句,而且您的代码不必解析整数两次。

于 2012-11-27T21:29:08.513 回答