Write a program that converts dates from numerical monthdayy
Write a program that converts dates from numerical “month/day/year” format to normal “month day, year” format (for example, 12/25/2000 corresponds to December 25, 2000). You will define three exception classes, one called MonthException, another called DayException, and a third called YearException. If the user enters anything other than a legal month number (integers from 1 to 12), your program will throw and catch a MonthException and ask the user to reenter the month. Similarly, if the user enters anything other than a valid day number (integers from 1 to either 28, 29, 30, or 31, depending on the month and year), then your program will throw and catch a DayException and ask the user to reenter the day. If the user enters a year that is not in the range 1000 to 3000 (inclusive), then your program will throw and catch a YearException and ask the user to reenter the year. (There is nothing very special about the numbers 1000 and 3000 other than giving a good range of likely dates.) Use the following rule for determining if the year is a leap year: A year is a leap year if it is divisible by 4 but is not divisible by 100, or if it is divisible by 400.
Solution
DateException.java
import java.util.Scanner;
public class DateException {
public static void main(String[] args) {
//Declaring variables
int day, month, year, month_days = 0;
String date=\"\";
//Create a month_name[] array and initialized
String month_name[]={\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"};
//Scanner class object is used to read the inputs entered by the user
Scanner sc = new Scanner(System.in);
//Getting the date entered by the user
System.out.println(\"Enter Date :\");
date = sc.next();
//Parsing the date using the delimeter \"/\"
String dat[] = date.split(\"/\");
//Converting the String type to Integer type variable
month = Integer.parseInt(dat[0]);
while (true) {
try {
//If the month is within the range then throw Exception and display Error message
if (month < 1 || month > 12) {
throw new MonthException(\"** Month Exception,Must be between 1-12 **\");
} else
break;
} catch (MonthException e) {
//Getting the Month Entered by the user
System.out.print(\"Enter Month :\");
month = sc.nextInt();
continue;
}
}
//Converting the String to the Integer type
day = Integer.parseInt(dat[1]);
//Converting the String type to integer type
year = Integer.parseInt(dat[2]);
//If the year is not within range the throw Exception and Display error
while (true) {
if (year < 1000 || year > 3000) {
try {
throw new YearException(\"** Year Exception.Must be between 1000-3000 **\");
} catch (YearException e) {
//Getting the year entered by the user
System.out.print(\"Enter Year :\");
year = sc.nextInt();
continue;
}
} else
break;
}
//Based on the month entered by the user getting the no of days in the month
if (month == 1) {
month_days = 31;
} else if (month == 2) {
/* Checking whether the year is leap year or not
* If yes,then no of days is 29
* if not,then no of days is 28
*/
if (year % 400 == 0) {
month_days = 29;
} else if (year % 100 == 0) {
month_days = 28;
} else if (year % 4 == 0) {
month_days = 29;
} else {
month_days = 28;
}
} else if (month == 3) {
month_days = 31;
} else if (month == 4) {
month_days = 30;
} else if (month == 5) {
month_days = 31;
} else if (month == 6) {
month_days = 30;
} else if (month == 7) {
month_days = 31;
} else if (month == 8) {
month_days = 31;
} else if (month == 9) {
month_days = 30;
} else if (month == 10) {
month_days = 31;
} else if (month == 11) {
month_days = 30;
} else if (month == 12) {
month_days = 31;
}
while (true) {
/* Checking the user entered day is valid or not
* If not,then throw Exception and Display the error message
* Prompts again to enter
*/
if (day < 1 || day > month_days) {
try {
throw new DayException(\"** Day Exception.Must be between 1-\"+month_days+\"**\");
} catch (DayException e) {
System.out.print(\"Enter Day :\");
day = sc.nextInt();
continue;
}
} else
break;
}
//Displaying the final Output
System.out.print(\"\ Date :\"+month_name[month-1]+\" \"+day+\",\"+year);
}
}
________________________
DayException.java
public class DayException extends Exception {
public DayException(String string) {
System.out.println(string);
}
}
_______________________
MonthException.java
public class MonthException extends Exception {
public MonthException(String string) {
System.out.println(string);
}
}
___________________________
YearException.java
public class YearException extends Exception {
public YearException(String string) {
System.out.println(string);
}
}
_____________________________
Output1:
Enter Date :
13/32/3001
** Month Exception,Must be between 1-12 **
Enter Month :12
** Year Exception.Must be between 1000-3000 **
Enter Year :2016
** Day Exception.Must be between 1-31**
Enter Day :31
December 31,2016
________________________
output2:
Enter Date :
05/06/1984
Date :May 6,1984
__________Thank You



