public class APCalendar
{
 /** Returns true if year is a leap year and false otherwise. */
 private static boolean isLeapYear(int year)
 { /* implementation not shown */ }
 /** Returns the number of leap years between year1 and year2, inclusive.
 * Precondition: 0 <= year1 <= year2
 */
 public static int numberOfLeapYears(int year1, int year2)
 { 

    int years = 0;
 
    for(int i = year1; i < year2; i++;) {

        isLeapYear(i);

    }
    
    return years;
 
 }
 /** Returns the value representing the day of the week for the first day of year,
 * where 0 denotes Sunday, 1 denotes Monday, ..., and 6 denotes Saturday.
 */
 private static int firstDayOfYear(int year)
 { /* implementation not shown */ }
 /** Returns n, where month, day, and year specify the nth day of the year.
 * Returns 1 for January 1 (month = 1, day = 1) of any year.
 * Precondition: The date represented by month, day, year is a valid date.
 */
 private static int dayOfYear(int month, int day, int year)
 { /* implementation not shown */ }
 /** Returns the value representing the day of the week for the given date
 * (month, day, year), where 0 denotes Sunday, 1 denotes Monday, ...,
 * and 6 denotes Saturday.
 * Precondition: The date represented by month, day, year is a valid date.
 */
 public static int dayOfWeek(int month, int day, int year)
 { /* to be implemented in part (b) */ }
 // There may be instance variables, constructors, and other methods not shown.
}

Scoring (5/5)

  • Initialize numeric variable (count) 1/1
  • Loop through each necessary year in range (for loop, with condition in code block) 1/1
  • Calls isLeapYear on valid year in range 1/1
  • Update count based on result of isLeapYear 1/1
  • Return count of leap years 1/1

(b) Write the static method dayOfWeek, which returns the integer value representing the day of the week for the given date (month, day, year), where 0 denotes Sunday, 1 denotes Monday, ..., and 6 denotes Saturday. For example, 2019 began on a Tuesday, and January 5 is the fifth day of 2019. As a result, January 5, 2019, fell on a Saturday, and the method call dayOfWeek(1, 5, 2019) returns 6. As another example, January 10 is the tenth day of 2019. As a result, January 10, 2019, fell on a Thursday, and the method call dayOfWeek(1, 10, 2019) returns 4. In order to calculate this value, two helper methods are provided for you. • firstDayOfYear(year) returns the integer value representing the day of the week for the first day of year, where 0 denotes Sunday, 1 denotes Monday, ..., and 6 denotes Saturday. For example, since 2019 began on a Tuesday, firstDayOfYear(2019) returns 2. • dayOfYear(month, day, year) returns n, where month, day, and year specify the nth day of the year. For the first day of the year, January 1 (month = 1, day = 1), the value 1 is returned. This method accounts for whether year is a leap year. For example, dayOfYear(3, 1, 2017) returns 60, since 2017 is not a leap year, while dayOfYear(3, 1, 2016) returns 61, since 2016 is a leap year.

public class APCalendar
{
 /** Returns true if year is a leap year and false otherwise. */
 private static boolean isLeapYear(int year)
 { /* implementation not shown */ }
 /** Returns the number of leap years between year1 and year2, inclusive.
 * Precondition: 0 <= year1 <= year2
 */
 public static int numberOfLeapYears(int year1, int year2)
 { 

    int years = 0;
 
    for(int i = year1; i < year2; i++;) {

        isLeapYear(i);

    }
    
    return years;
 
 }
 /** Returns the value representing the day of the week for the first day of year,
 * where 0 denotes Sunday, 1 denotes Monday, ..., and 6 denotes Saturday.
 */
 private static int firstDayOfYear(int year)
 { /* implementation not shown */ }
 /** Returns n, where month, day, and year specify the nth day of the year.
 * Returns 1 for January 1 (month = 1, day = 1) of any year.
 * Precondition: The date represented by month, day, year is a valid date.
 */
 private static int dayOfYear(int month, int day, int year)
 { /* implementation not shown */ }
 /** Returns the value representing the day of the week for the given date
 * (month, day, year), where 0 denotes Sunday, 1 denotes Monday, ...,
 * and 6 denotes Saturday.
 * Precondition: The date represented by month, day, year is a valid date.
 */
 public static int dayOfWeek(int month, int day, int year)
 { 
    
    return (dayOfYear(month, day, year) - 1 + firstDayOfYear(year)) % 7;
 
 
 }
 // There may be instance variables, constructors, and other methods not shown.
}

Scoring (4/4)

  • Call firstDayofYear 1/1
  • Calls dayOfYear 1/1
  • Calculate value representing day of week (-1, incorrect calculation) 1/1
  • Return calculated value 1/1