diff options
| author | mo khan <mo@mokhan.ca> | 2019-08-11 17:01:24 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2019-08-11 17:01:24 -0600 |
| commit | 34434b1616d46ea638b373927320bc592e8e09fe (patch) | |
| tree | eb166696aae088a9545cf5bf2c938674553eb818 /src/Q6 | |
| parent | 30c5d770feaf5a5c83d131b3af0db4d02e103578 (diff) | |
add error handling and fill out program profile
Diffstat (limited to 'src/Q6')
| -rw-r--r-- | src/Q6/README.md | 114 | ||||
| -rw-r--r-- | src/Q6/WeekDay.java | 16 |
2 files changed, 114 insertions, 16 deletions
diff --git a/src/Q6/README.md b/src/Q6/README.md index ed938ff..7e7cf36 100644 --- a/src/Q6/README.md +++ b/src/Q6/README.md @@ -5,28 +5,112 @@ Student ID: 3431709 1. Problem Statement: -```text -Implement a Java method that prints out the day of the week for a given: + Implement a Java method that prints out the day of the week for a given: -* day (1...31), -* month (1...12) and -* year in the range of March 1900 to February 2100. + * day (1...31), + * month (1...12) and + * year in the range of March 1900 to February 2100. -Calculate the day of the week for the dates between -March 1900 and February 2100 as follows: + Calculate the day of the week for the dates between + March 1900 and February 2100 as follows: -1. Calculate the total number of days from 1900/1/1 to the given date (see below for details). -1. Divide this number by 7 with an integer remainder: This now is the day of the week, with 0 as Sunday, 1 as Monday, and so on. + 1. Calculate the total number of days from 1900/1/1 to the given date (see below for details). + 1. Divide this number by 7 with an integer remainder: This now is the day of the week, with 0 as Sunday, 1 as Monday, and so on. -To calculate the total number of days, you have to implement the following steps: + To calculate the total number of days, you have to implement the following steps: -1. Subtract 1900 from the given year, and multiply the result by 365 -1. Add the missing leap years by adding (year − 1900) / 4. -1. If the year itself is a leap year and the month is January or February, you have to subtract 1 from the previous result. -1. Now add all the days of the months of the given year to the result (in the case of February, it is always 28 because the additional day for a leap year has already been added in the calculation). -``` + 1. Subtract 1900 from the given year, and multiply the result by 365 + 1. Add the missing leap years by adding (year − 1900) / 4. + 1. If the year itself is a leap year and the month is January or February, you have to subtract 1 from the previous result. + 1. Now add all the days of the months of the given year to the result (in the case of February, it is always 28 because the additional day for a leap year has already been added in the calculation). 1. Description of the Code: + + The code implements the algorithm described above. + It attempts to validate the entered day, month and year. + It assumes that the entered input is an integer value. + The bounds of the input is January 1900 to February 2100. + 1. Errors and Warnings: + + 1. When the year is less than 1900, then an error is displayed. + + ```bash + $ java -cp target/assignment2*.jar ca.mokhan.comp268.App 6 + --- Question 6 --- + Enter year: + 1899 + Invalid year. + ``` + + 1. When the year is greater than 2100, then an error is displayed. + + ```bash + $ java -cp target/assignment2*.jar ca.mokhan.comp268.App 6 + --- Question 6 --- + Enter year: + 2101 + Invalid year. + ``` + + 1. When the year is 1900 and the month is before March, then an error is + displayed. + + ```bash + $java -cp target/assignment2*.jar ca.mokhan.comp268.App 6 + --- Question 6 --- + Enter year: + 1900 + Enter month: + 2 + Invalid month. + ``` + + 1. When the year is 2100 and the month is after February, then an error is + displayed. + + ```bash + $ java -cp target/assignment2*.jar ca.mokhan.comp268.App 6 + --- Question 6 --- + Enter year: + 2100 + Enter month: + 3 + Invalid month. + ``` + 1. Sample Input and Output: + + 1. March 1, 1900 was a Thursday. + + ```bash + $ java -cp target/assignment2*.jar ca.mokhan.comp268.App 6 + --- Question 6 --- + Enter year: + 1900 + Enter month: + 3 + Enter day: + 1 + + Today is: + Thursday + ``` + + 1. January 31, 2100 will be on a Sunday. + + ```bash + $ java -cp target/assignment2*.jar ca.mokhan.comp268.App 6 + --- Question 6 --- + Enter year: + 2100 + Enter month: + 1 + Enter day: + 31 + + Today is: + Sunday + ``` + 1. Discussion: diff --git a/src/Q6/WeekDay.java b/src/Q6/WeekDay.java index c74f1d0..7c79e8b 100644 --- a/src/Q6/WeekDay.java +++ b/src/Q6/WeekDay.java @@ -52,16 +52,30 @@ public class WeekDay { System.out.println("--- Question 6 ---"); System.out.println("Enter year:"); int year = in.nextInt(); + if (year < 1900 || year > 2100) { + System.out.println("Invalid year."); + System.exit(-1); + } System.out.println("Enter month:"); int month = in.nextInt(); + if (month < 1 || month > 12 || (year == 1900 && month < 3) || (year == 2100 && month > 2)) { + System.out.println("Invalid month."); + System.exit(-1); + } System.out.println("Enter day:"); int day = in.nextInt(); System.out.println(); System.out.println("Today is:"); - System.out.println(new WeekDay().getWeekDay(day, month, year)); + + try { + System.out.println(new WeekDay().getWeekDay(day, month, year)); + } catch (IllegalArgumentException error) { + System.out.println("Invalid date."); + System.exit(-1); + } System.out.println(); } } |
