Tuesday, November 26, 2013

WAP with class Date in BlueJ, Java

QUESTION
Write a program to perform the following functions:  
1. To check whether year entered by user is leap year or not.
2. To check whether a date entered by user is valid or not dd-mm-yyyy
3. To display the future date after 'n' days.

CODE:
import java.io.*; //Header file to import java.io package     

 class Date
  {  //Start of class
      int dd,mm,yy; // variables to store the date,moth and year
      Date()
       { //Default constructor to assign values to zero
        dd=0;
        mm=0;
        yy=0;
       }
      void input()throws IOException
       { //To input the date,month and year
     BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
           System.out.println("Enter day :");
           dd=Integer.parseInt(br.readLine());
           System.out.println("Enter month :");
           mm=Integer.parseInt(br.readLine());
           System.out.println("Enter year :");
           yy=Integer.parseInt(br.readLine());
       }
      int leap(int y)
       { // Function t check whether year entered is leap year or not
           if(y%100!=0)
            { 
            if(y%4==0)
            return(1); 
            else 
            return(0);
            }
           if(y%400==0) //Condition for millennium year
            return(1);
           else 
            return(0);
        }
      int check(Date d)
       { // Check whether the date entered is valid or not
       if(d.mm>=1 && d.mm<=12)
       {
       if(d.mm==2)
        {
         int y1=leap(d.yy);
         if(y1==1)
          {
              if(d.dd>=1 && d.dd<=29)
               return(1);
               else 
               return(0);
           }
         else 
          {
              if(d.dd>=1 && d.dd<=28)
               return(1);
               else
               return(0);
               
           }
        }
       if(d.mm>=1 && d.mm<=7)
        {
          if(d.mm%2!=0)
           {
            if(d.dd>=1 && d.dd<=31) 
            return(1);
            else
            return(0);
           }
          else 
           {
            if(d.dd>=1 && d.dd<=30)
            return(1);
            else
            return(0);
           }
        }
       if(d.mm>=8 && d.mm <=12)
        {
          if(d.mm%2==0)
           {
            if(d.dd>=1 && d.dd<=31) 
            return(1);
            else
            return(0);
           }
          else 
           {
            if(d.dd>=1 && d.dd<=30)
            return(1);
            else
            return(0);
           }
        }  
        else
        return(0); 
       }
       else
        return(0);
       }
     Date futureDate(int n)
      { // To calculate the date after 'n' days
      int months[]={0,31,28,31,30,31,30,31,31,30,31,30,31};  
      System.out.println(dd+"/"+mm+"/"+yy);
      while((months[mm]-dd) <= n)
       {
          n=n-(months[mm]-dd);
          dd=0;
          mm++;
          if(mm>12) 
           {
             mm=1;
             yy++;
           }
        }
          System.out.println(dd);
          dd+=n;
          Date obj=new Date();
          obj.dd=dd;
          obj.mm=mm;
          obj.yy=yy;
          return(obj);
      }
      
     public static void main(String Args[])throws IOException
       { // Start of main function
       BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
       Date ob=new Date(); // Creating object of class
       ob.input(); // Input the date 
       int res1=ob.leap(ob.yy); // Returns whether year entered is leap or not
       int res2=ob.check(ob); 
       if(res2==0)
        { // Returns 0 when date is invalid
        System.out.println("Invalid Date");
        }
       else
        {
        System.out.println("Enter no. of days:");
        int num=Integer.parseInt(in.readLine());
        Date ob1=ob.futureDate(num); 
        System.out.println(ob1.dd+"/"+ob1.mm+"/"+ob1.yy); //Displays date after 'n' days
        } 
       System.out.println("Leap year '1' or '0' :"+res1);
       System.out.println("Valid date '1' or '0':"+res2);
     } // End of main function
} //End of class


                       
               
       

No comments:

Post a Comment