From f8c9c0376ea2e837eb128a50ec4c043de0966f98 Mon Sep 17 00:00:00 2001 From: mo Date: Sat, 13 Jul 2019 15:07:24 -0600 Subject: debug assignment 6 --- src/App.java | 3 +++ src/Q6/WeekDay.java | 39 ++++++++++++++++++++++++++++++++++----- src/Q6/WeekDayTest.java | 6 +++++- 3 files changed, 42 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/App.java b/src/App.java index 4492029..4c8d3e8 100644 --- a/src/App.java +++ b/src/App.java @@ -29,6 +29,9 @@ public class App { case 5: Q5.Village.main(args); break; + case 6: + Q6.WeekDay.main(args); + break; default: System.out.println("Bye"); System.exit(0); diff --git a/src/Q6/WeekDay.java b/src/Q6/WeekDay.java index 003fafa..9b322c8 100644 --- a/src/Q6/WeekDay.java +++ b/src/Q6/WeekDay.java @@ -1,5 +1,7 @@ package Q6; +import java.util.*; + public class WeekDay { private int numberOfDays; public static final int JANUARY = 0; @@ -24,7 +26,10 @@ public class WeekDay { public static final int SATURDAY = 0; public String getWeekDay(int day, int month, int year) { - switch (daysSinceEpoch(day, month, year) % 7) { + int totalDaysSinceEpoch = daysSinceEpoch(day, month, year); + this.puts("days since epoch: %d", totalDaysSinceEpoch); + this.puts("weekday: %d", totalDaysSinceEpoch % 7); + switch (totalDaysSinceEpoch % 7) { case 0: return "Sunday"; case 1: @@ -46,10 +51,13 @@ public class WeekDay { private int daysSinceEpoch(int day, int month, int year) { int days = (year - 1900) * 365; + this.puts("days: %d", days); days += (year - 1900) / 4; - if (isLeapYear(year) && (month == 1 || month == 2)) - days -= 1; + this.puts("days: %d", days); + if (isLeapYear(year) && (month == 1 || month == 2)) days -= 1; + this.puts("days: %d", days); days += daysThisYearUpTo(day, month); + this.puts("days: %d", days); return days; } @@ -59,8 +67,10 @@ public class WeekDay { private int daysThisYearUpTo(int day, int month) { int x = 0; - for (int i = 1; i < month; i++) - x += daysInMonth(month); + for (int i = 1; i < month; i++) { + this.puts("days in month: %d is %d", month, daysInMonth(month)); + x += daysInMonth(i); + } return x + day; } @@ -94,4 +104,23 @@ public class WeekDay { return 0; } } + + private void puts(String format, Object... args) { + System.out.println(String.format(format, args)); + } + + public static void main(String[] args) { + Scanner in = new Scanner(System.in); + + System.out.println("Enter year:"); + int year = in.nextInt(); + + System.out.println("Enter month:"); + int month = in.nextInt(); + + System.out.println("Enter day:"); + int day = in.nextInt(); + + System.out.println(new WeekDay().getWeekDay(day, month, year)); + } } diff --git a/src/Q6/WeekDayTest.java b/src/Q6/WeekDayTest.java index b6d7070..2c35424 100644 --- a/src/Q6/WeekDayTest.java +++ b/src/Q6/WeekDayTest.java @@ -18,7 +18,11 @@ public class WeekDayTest extends TestCase { return new TestSuite(WeekDayTest.class); } - public void test_getWeekDay() { + public void test_getWeekDay_1900_03_01() { + assertEquals("Thursday", subject.getWeekDay(1, 3, 1900)); + } + + public void test_getWeekDay_2019_07_13() { assertEquals("Saturday", subject.getWeekDay(13, 7, 2019)); } } -- cgit v1.2.3