当年龄不在范围之间时,抛出用户定义的异常

时间:2016-03-13 08:15:11

标签: java if-statement constructor exception-handling try-catch

我创建了一个class Student属性:rno, age, name, course,我已经定义了一个参数化的构造函数。我希望在age不在15和21之间时抛出异常。我已将age初始化为27,但它不会进入if条件。你知道为什么会这样吗?

   class Age extends Exception
   {
   Age(String str)
   {
    super(str);
   }
  }

  public class Student
  {
   int rno,age;
   String name,course;

   Student(int r,int a,String n,String c) 
   { 
    rno=r;
    age=a;
    name=n;
    course=c;
   }

   public void display()
   { 
    try
      {
       if(age<=15 && age>=21)
          throw new Age("Not accepted");
       else 
        System.out.println("Name:"+name);
        System.out.println("Rno:"+rno);
        System.out.println("Age:"+age);
        System.out.println("Course:"+course);
        System.out.println("...........");
      }

   catch(Age a)
    {
       System.out.println(""+a);
    }
   }

   public static void main(String args[])
   {
    Student s1=new Student(1,26,"ABC","Java");
    Student s2=new Student(2,17,"XYZ","C++");
    s1.display();
    s2.display();
   }
  }

  Output
   Name:ABC
  Rno:1
  Age:26
  Course:Java
  ...........
  Name:XYZ
  Rno:2
  Age:17
  Course:C++
  ...........

2 个答案:

答案 0 :(得分:5)

问题在于陈述if(age<=15 && age>=21) - 年龄将永远不会低于15且大于21。

你有&&这意味着在bool逻辑中,你需要将它改为||,这意味着OR。

答案 1 :(得分:2)

if(age<=15 || age>=21) 

这应该是此条件检查中的陈述。因为这两种情况在任何情况下都不成立。