Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Fig. 8.7: Date.java
- *
- * Benito Dannes
- * 5 March 2017
- */
- // Date class declaration
- public class Date
- {
- private int month; // 1 - 12
- private int day; // 1 - 31 based on month
- private int year; // any year
- private static final int[] daysPerMonth = // days in each month
- {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
- // Constructor: call checkMonth to confirm proper value for month;
- // call checkDay to confirm proper value for day
- public Date (int theMonth, int theDay, int theYear)
- {
- month = checkMonth (theMonth); // validate month
- year = theYear; // could validate year
- day = checkDay (theDay); // validate day
- System.out.printf("Date object constructor for data %s\n", this);
- } // end Date constructor
- // utility method to confirm proper month value
- private int checkMonth (int testMonth)
- {
- if (testMonth > 0 && testMonth <= 12) // validate month
- {
- return testMonth;
- }
- else // month is invalid
- {
- throw new IllegalArgumentException ("month must be 1-12");
- }
- } // end method checkMonth
- // utility method to confirm proper day value based on month and year
- private int checkDay (int testDay)
- {
- // check if day in range for month
- if (testDay > 0 && testDay <= daysPerMonth[month])
- {
- return testDay;
- }
- // check for leap year
- if (month == 2 && testDay == 29 && (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)))
- {
- return testDay;
- }
- throw new IllegalArgumentException ("day-out-of-range for the specified month and year");
- } // end method checkDay
- // return a String of the form month/day/year
- public String toString()
- {
- return String.format ("%d/%d/%d", month, day, year);
- } // end method toString
- } // end class Date
Advertisement
Add Comment
Please, Sign In to add comment