3 回答

TA贡献1776条经验 获得超12个赞
您可以做的一件事是将if检查提取到一个单独的方法中,您可以使用输入、正则表达式和消息调用该方法:
private void validateInput(String input, String regex, String message) {
if (input != null && !input.matches(regex)) {
throw new IllegalArgumentException("Error Message :" + message);
}
}
public void validate(String firstName, String middleName, String lastName) {
this.validateInput(firstName, "^[a-zA-Z`’ -]{1,50}$",
"Invalid value for firstName field from Input Parameter");
this.validateInput(middleName, "^[a-zA-Z.`’ -]{0,50}$",
"Invalid value for middleName field from Input Parameter");
this.validateInput(lastName, "^[a-zA-Z`’ -]{2,50}$",
"Invalid value for lastName field from Input Parameter");
}

TA贡献1865条经验 获得超7个赞
为什么不使用else if来防止消息被覆盖?这样代码将在第一个匹配的条件下退出。这是假设您想坚持您的实现而不是过多地编辑代码。
public void validate(String firstName, String middleName, String lastName) {
String errorMessage = null ;
if (firstName != null && !firstName.matches("^[a-zA-Z`’ -]{1,50}$")) {
errorMessage = "Invalid value for firstName field from Input Parameter";
}else if (middleName != null && !middleName.matches("^[a-zA-Z.`’ -]{0,50}$")) {
errorMessage = "Invalid value for middleName field from Input Parameter";
}else if (lastName != null && !lastName.matches("^[a-zA-Z`’ -]{2,50}$")) {
errorMessage = "Invalid value for lastName field from Input Parameter";
}
if (errorMessage != null){
throw new IllegalArgumentException("Error Message :" + errorMessage);
}
System.out.println(firstName + " " + middleName + " " + lastName);
}

TA贡献1966条经验 获得超4个赞
使用你的第二个想法......
public void validate(String firstName, String middleName, String lastName) {
String errorMessage = "Invalid value for fields %s from Input Parameter";
StringBuffer fields = new StringBuffer();
if (firstName != null && !firstName.matches("^[a-zA-Z`’ -]{1,50}$")) {
fields.append("firstName");
}
if (middleName != null && !middleName.matches("^[a-zA-Z.`’ -]{0,50}$")) {
fields.append(" middleName");
}
if (lastName != null && !lastName.matches("^[a-zA-Z`’ -]{2,50}$")) {
fields.append(" lastName");
}
if (fields.length() > 0){
throw new IllegalArgumentException("Error Message :" + String.format(errorMessage, fields.toString()));
}
System.out.println(firstName + " " + middleName + " " + lastName);
}
打电话给
validate("", "1", "");
输出:
Exception in thread "main" java.lang.IllegalArgumentException: Error Message :Invalid value for fields firstName middleName lastName from Input Parameter
at Main.validate(Main.java:26)
at Main.main(Main.java:5)
exit status 1
打电话给
validate("Andres", "1", "Martinez");
输出:
Exception in thread "main" java.lang.IllegalArgumentException: Error Message :Invalid value for fields middleName from Input Parameter
at Main.validate(Main.java:26)
at Main.main(Main.java:5)
exit status 1
添加回答
举报