Write a class named MonthDays. The class’s constructor should accept two argumen
ID: 672563 • Letter: W
Question
Write a class named MonthDays. The class’s constructor should accept two arguments:
l An integer for the month (1 = January, 2 February, etc).
l An integer for the year
The class should have a method named getNumberOfDays that returns the number of days
in the specified month. The method should use the following criteria to identify leap years:
1. Determine whether the year is divisible by 100. If it is, then it is a leap year if and
if only it is divisible by 400. For example, 2000 is a leap year but 2100 is not.
2. If the year is not divisible by 100, then it is a leap year if and if only it is divisible
by 4. For example, 2008 is a leap year but 2009 is not.
Demonstrate the class in a program that asks the user to enter the month (letting the user
enter an integer in the range of 1 through 12) and the year. The program should then display
the number of days in that month. Here is a sample run of the program:
Enter a month (1-12): 2 [Enter]
Enter a year: 2008 [Enter]
29 days
Explanation / Answer
public class MonthDays {
public MonthDays(int aYear, int aMonth)
{
year= aYear;
month=aMonth;
}
public int getNumberOfDays()
{
int days = DAYS_PER_MONTH[month-1];
if (month==2 && isLeapYear(year))
days++;
return days;
}
private boolean isLeapYear(int y)
{
if (year%100==0)
{
if(year%400==0)
return true;
}
else
{
if(year%4==0)
return true;
}
return false;
}
private int year;
private int month;
private static final int[] DAYS_PER_MONTH
= {31,28,31,30,31,30,31,31,30,31,30,31};
}
//--------------------------------------------------------------------------
import java.util.Scanner;
public class Test
{
static Scanner sc = new Scanner(System.in);
public static void main(String[] args)
{
int aMonth, aYear, days;
System.out.println ("Enter a month (1-12): ");
aMonth = sc.nextInt();
System.out.println ("Enter a year: ");
aYear = sc.nextInt();
MonthDays test= new MonthDays(aYear,aMonth);
days=test.getNumberOfDays();
System.out.println ("" + days +" days ");
}
}
/*************************************************************************
If you have any question about it, please leave me a comment
***************************************************************************/
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.