如何仅针对特定年龄段创建验证 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)
我需要编写验证人员年龄的验证。年龄只能是 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)