APCalendar
is #1 from the from the 2019 AP Computer Science A Free Response problems.
https://apcentral.collegeboard.org/pdf/ap19-frq-computer-science-a.pdf?course=ap-computer-science-a
Part (a) numberOfLeapYears
method
public static int numberOfLeapYears(int year1, int year2)
{
int leapYears = 0;
for(int y = year1; y <= year2; y++)
if(isLeapYear(y))
leapYears++;
return leapYears;
}
Part (b) dayOfWeek
method (original solution)
public static int dayOfWeek(int month, int day, int year)
{
int weekday = firstDayOfYear(year);
int additionalDays = dayOfYear(month, day, year) - 1;
for(int d = 1; d <= additionalDays; d++)
{
weekday++;
if(weekday == 7)
weekday = 0;
}
return weekday;
}
Part (b) dayOfWeek
method (considered solution)
public static int dayOfWeek(int month, int day, int year)
{
int additionalDays = dayOfYear(month, day, year) - 1;
return (firstDayOfYear(year) + additionalDays) % 7;
}
I didn’t see this solution when I first approached the problem. When I looked at my original solution a half hour later, I realized that it could obviously be simplified to this.
I’ve received a number of questions about whether alternate solutions to dayOfWeek
work. Please find my JUnit 5 test below. See Running JUnit 5 tests. Replace my code for the method with yours.
APCalendar.java
APCalendarTest.java
2019 AP CS Exam Free Response Solutions
- StepTracker Free Response Solution
- Delimiters Free Response Solution
- LightBoard Free Response Solution
Help & comments
Get help from AP CS Tutor Brandon Horn