如何仅针对特定年龄段创建验证 java

How to create a validation for only certain ages java

我需要编写验证人员年龄的验证。年龄只能是 20、30 或 40。当我创建以下方法并尝试创建一个 30 岁的人对象时,我得到了非法参数异常。有什么想法吗?

  private static void validateAge(final int age) {

    if (age != 20 || age != 30 || age != 40 ) {
        throw new IllegalArgumentException("invalid age " + age);
    }

}

所以唯一合法的值是 20、30 或 40。
这表示: age == 20 || age == 30 || age == 40 被否定的是 age != 20 && age != 30 && age != 40.

public class Test {
    
    public static void main(String args[]){
        
        int age = 20;
        
        boolean isValid = isValidAge(age);
        
        if(isValid)
            System.out.println("Entered Age is Valid.");
        else
            System.out.println("Entered Age is InValid.");
    }
    
    private static boolean isValidAge(final int age){
        if(age != 20 && age != 30 && age != 40)
            return false;
        else
            return true;
    }
}

这里需要检查年龄是否在20,30,40之间,否则抛出异常。

     if  ( ! ( age==20  ||  age==30  ||  age==40 ) ) {
           throw new IllegalArgumentException("invalid age " + age);
}

必须使用上述条件来检查年龄是否在这三个值之间。

您使用的条件将始终抛出异常,因为至少有一个条件为真,并且在逻辑或的情况下结果将为真,因为单个年龄值不会与所有条件匹配。

如果我们取30; age!=20 和 age!=40 将为真所以结果为真并且即使存在 30 也会抛出异常。

但在这种情况下,age==30 为真,因此整体条件为假,因为应用了否定,因此不会抛出异常。

这里你需要使用 AND 运算符而不是 OR ,所以你可以检查你的条件。 当您在某些情况下使用 OR 时(在您的对象值 30 的示例中) 条件将为真,因此其他条件无关紧要,因为这是 OR 所以抛出异常。

因此您可以将 if 条件替换为,

if(age != 20 && age != 30 && age != 40)