Question
Modify the Date class so that it includes a compareTo method with signature: int compareTo(Date anotherDate) This method should return the value 0 if this
Modify the Date class so that it includes a compareTo method with signature: int compareTo(Date anotherDate) This method should return the value 0 if this date (the date of the object upon which the method is invocked) is equal to the argument date; a value less than 0 if this date is earlier than the argument date; and a value greater than 0 if this date is a date later than the argument date. Create a test driver that shows your method performs correctly.
//---------------------------------------------------------------------- // Date.java by Dale/Joyce/Weems Chapter 1 // // Defines date objects having year, month, and day attributes. //----------------------------------------------------------------------
package ch01.dates;
public class Date { protected int year, month, day; public static final int MINYEAR = 1583;
// Constructor public Date(int newMonth, int newDay, int newYear) { month = newMonth; day = newDay; year = newYear; }
// Observers public int getYear() { return year; } public int getMonth(){ return month; } public int getDay() { return day; } public int lilian() { // Returns the Lilian Day Number of this date. // Precondition: This Date is a valid date after 10/14/1582. // // Computes the number of days between 1/1/0 and this date as if no calendar // reforms took place, then subtracts 578,100 so that October 15, 1582 is day 1. final int subDays = 578100; // number of calculated days from 1/1/0 to 10/14/1582
int numDays = 0;
// Add days in years. numDays = year * 365;
// Add days in the months. if (month <= 2) numDays = numDays + (month - 1) * 31; else numDays = numDays + ((month - 1) * 31) - ((4 * (month-1) + 27) / 10);
// Add days in the days. numDays = numDays + day;
// Take care of leap years. numDays = numDays + (year / 4) - (year / 100) + (year / 400);
// Handle special case of leap year but not yet leap day. if (month < 3) { if ((year % 4) == 0) numDays = numDays - 1; if ((year % 100) == 0) numDays = numDays + 1; if ((year % 400) == 0) numDays = numDays - 1; }
// Subtract extra days up to 10/14/1582. numDays = numDays - subDays; return numDays; } @Override public String toString() // Returns this date as a String. { return(month + "/" + day + "/" + year); } }
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started