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

Modify the Date class so that its toString method returns a string of the form \

ID: 2247494 • Letter: M

Question

Modify the Date class so that its toString method returns a string of the form "month number, number" - for example, "May 13,1989".

using java languae

public class Date
{
protected int year;
protected int month;
protected int 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;
}

public String toString()
// Returns this date as a String.
{
return(month + "/" + day + "/" + year);
}

}

Explanation / Answer

1. Method 1

public class Date

{

protected int year;

protected int month;

protected int 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;

}

public String toString()

// Returns the date string of the form "month number, number"

{

String monthname;

String[] strmonthnames = {"January",

"February",

"March",

"April",

"May",

"June",   

"July",   

"August",   

"September",

"October",

"November",   

"December"};

if(month < strmonthnames.length)

monthname = strmonthnames[month-1];

else

monthname = "InvalidMonth";

return(monthname + " " + day + ", " + year);

}

}

-------------------------------------------------

2. Method 2

Alternatively, you could make use of DateFormatSymbols:

//import s DateFormatSymbols

import java.text.DateFormatSymbols;

//Your toString() method could be

public String toString()

// Returns the date string of the form "month number, number"

{

String monthname;

  

monthname = new DateFormatSymbols().getMonths()[month-1];

return(monthname + " " + day + ", " + year);

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote