【问题标题】:How to create a validation for only certain ages java如何为特定年龄的java创建验证
【发布时间】:2021-10-22 08:52:53
【问题描述】:

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

  private static void validateAge(final int age) {

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

}

【问题讨论】:

  • 你需要AND,而不是ORif (age != 20 && age != 30 && age != 40 ) throw ...。或者,if (!(age == 20 || age == 30 || age == 40 )) throw ....

标签: java validation constructor


【解决方案1】:

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

【讨论】:

    【解决方案2】:
    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;
        }
    }
    

    【讨论】:

    • 您好,欢迎您。虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
    【解决方案3】:

    这里你需要检查那个年龄是否在20,30,40之间;如果没有抛出异常。

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

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

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

    如果我们取 30; age!=20 和 age!=40 将为真,因此结果为真,即使存在 30 也会引发异常。

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

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-10
        • 2014-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多