Commit f8c9c03
Changed files (3)
src
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));
+ }
}
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));
}
}
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);