Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Implementing a GregorianDate Class Definition The Gregorian calendar is today\'s

ID: 3575223 • Letter: I

Question

Implementing a GregorianDate Class Definition The Gregorian calendar is today's internationally accepted civil calendar and is also known as the "Western calendar A Gregorian date is a date on the modern calendar. The Gregorian calendar was introduced in Febraury 1582. Definition A year is a leap year if it is either divisible 400 or it is divisible by 4 but not divisible by 100. So 2000 and 1996 were leap years. However, 1900 was not a leap year. package gregoriandemo Describes a date on the Gregorian calendar after 1582 e Cauthor Jane Doe

Explanation / Answer

PROGRAM CODE:

GregorianDate.java

package gregoriandemo;

public class GregorianDate {

   private int month;

   private int year;

   private int day;

  

   public GregorianDate() {

       this.month = 01;

       this.day = 01;

       this.year = 1970;

   }

  

   public GregorianDate(int m, int d, int y)

   {

       boolean isLeapYear = false;

       if(y%400 == 0)

           isLeapYear = true;

      

       if(y < 1583 || m < 0 || m > 12 || d < 0 || d > 31 )

           throw new IllegalArgumentException();

       else if((isLeapYear && m == 2 && d>29) || ((d == 31) && (m == 4 || m == 6 || m == 9 || m == 11)) || (!isLeapYear && m == 2 && d > 28))

           throw new IllegalArgumentException();

       else

       {

           this.year = y;

           this.day = d;

           this.month = m;

       }

   }

  

   public int getMonth()

   {

       return month;

   }

  

   public String getMonthName()

   {

       String monthName = "";

      

       switch(this.month)

       {

       case 1: monthName = "January";

               break;

       case 2: monthName = "February";

               break;

       case 3: monthName = "March";

               break;

       case 4: monthName = "April";

               break;

       case 5: monthName = "May";

               break;

       case 6: monthName = "June";

               break;

       case 7: monthName = "July";

               break;

       case 8: monthName = "August";

               break;

       case 9: monthName = "September";

               break;

       case 10: monthName = "October";

               break;

       case 11: monthName = "November";

               break;

       case 12: monthName = "December";

               break;

       }

       return monthName;

   }

  

   public int getDay()

   {

       return this.day;

   }

  

   public int getYear()

   {

       return this.year;

   }

  

   public String toString()

   {

       return (this.month<=9? "0" + this.month : this.month) + "/" + (this.day<=9? "0" + this.day : this.day) + "/" + this.year;

   }

  

   public void setGregorianDate(int m, int d, int y)

   {

       boolean isLeapYear = false;

       if(y%400 == 0)

           isLeapYear = true;

      

       if(y < 1583 || m < 0 || m > 12 || d < 0 || d > 31 )

           throw new IllegalArgumentException();

       else if((isLeapYear && m == 2 && d>29) || ((d == 31) && (m == 4 || m == 6 || m == 9 || m == 11)) || (!isLeapYear && m == 2 && d > 28))

           throw new IllegalArgumentException();

       else

       {

           this.year = y;

           this.day = d;

           this.month = m;

       }  

   }

}

GregorianDateDriver.java

package gregoriandemo;

public class GregorianDateDriver {

   public static void main(String[] args) {

       System.out.println(new GregorianDate(12, 31, 2017));

       System.out.println(new GregorianDate());

       System.out.println(new GregorianDate(11, 03, 1992).getMonthName());

       // this will throw illegal argument exception

       System.out.println("Providing invalid date");

       System.out.println(new GregorianDate(13, 12, 2016));

   }

}

OUTPUT:

12/31/2017

01/01/1970

November

Providing invalid date

Exception in thread "main" java.lang.IllegalArgumentException

   at gregoriandemo.GregorianDate.<init>(GregorianDate.java:22)

   at gregoriandemo.GregorianDateDriver.main(GregorianDateDriver.java:11)