我是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?
答案 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语句,而且你的代码不必解析整数两次。