My program is about age calculation. It is running successfully, but once i get the output its not go to the next, its just come out from the running condition. what will i do for this. I pasted my program below.
import java.util.*;
import java.io.*;
public class AGECALC {
public static void main(String[] args) throws IOException {
int day = 1, month = 0, year = 1, ageYears, ageMonths, ageDays;
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
Calendar cd = Calendar.getInstance();
try {
System.out.print("Enter year of your date of birth : ");
year = Integer.parseInt(in.readLine());
{
if (year > cd.get(Calendar.YEAR)) {
System.out.print("Invalid date of birth.");
System.exit(0);
}
System.out.print("Enter month of your date of birth : ");
month = Integer.parseInt(in.readLine());
if (month < 1 || month > 12) {
System.out.print("Please enter month between 1 to 12.");
System.exit(0);
} else {
month--;
if (year == cd.get(Calendar.YEAR)) {
if (month > cd.get(Calendar.MONTH)) {
System.out.print("Invalid month!");
System.exit(0);
}
}
}
System.out.print("Enter day of your date of birth : ");
day = Integer.parseInt(in.readLine());
if (month == 1 || month == 3 || month == 5 || month == 7
|| month == 8 || month == 10 || month == 12) {
if (day > 31 || day < 1) {
System.out.print("Please enter day between 1 to 31.");
System.exit(0);
}
} else if (month == 4 || month == 6 || month == 9
|| month == 11) {
if (day > 30 || day < 1) {
System.out.print("Please enter daybetween 1 to 30.");
System.exit(0);
}
} else {
if (new GregorianCalendar().isLeapYear(year)) {
if (day < 1 || day > 29) {
System.out
.print("Please enter day between 1 to 29.");
System.exit(0);
}
} else if (day < 1 || day > 28) {
System.out.print("Please enter day between 1 to 28.");
System.exit(0);
}
}
if (year == cd.get(Calendar.YEAR)) {
if (month == cd.get(Calendar.MONTH)) {
if (day > cd.get(Calendar.DAY_OF_MONTH)) {
System.out.print("Invalid date!");
System.exit(0);
}
}
}
}
} catch (NumberFormatException ne) {
System.out.print(ne.getMessage() + " is not a legal entry!");
System.out.print("Please enter number.");
System.exit(0);
}
Calendar bd = new GregorianCalendar(year, month, day);
ageYears = cd.get(Calendar.YEAR) - bd.get(Calendar.YEAR);
if (cd.before(new GregorianCalendar(cd.get(Calendar.YEAR), month, day))) {
ageYears--;
ageMonths = (12 - (bd.get(Calendar.MONTH) + 1))
+ (bd.get(Calendar.MONTH));
if (day > cd.get(Calendar.DAY_OF_MONTH)) {
ageDays = day - cd.get(Calendar.DAY_OF_MONTH);
} else if (day < cd.get(Calendar.DAY_OF_MONTH)) {
ageDays = cd.get(Calendar.DAY_OF_MONTH) - day;
} else {
ageDays = 0;
}
} else if (cd.after(new GregorianCalendar(cd.get(Calendar.YEAR), month,
day))) {
ageMonths = (cd.get(Calendar.MONTH) - (bd.get(Calendar.MONTH)));
if (day > cd.get(Calendar.DAY_OF_MONTH))
ageDays = day - cd.get(Calendar.DAY_OF_MONTH) - day;
else if (day < cd.get(Calendar.DAY_OF_MONTH)) {
ageDays = cd.get(Calendar.DAY_OF_MONTH) - day;
} else
ageDays = 0;
} else {
ageYears = cd.get(Calendar.YEAR) - bd.get(Calendar.YEAR);
ageMonths = 0;
ageDays = 0;
}
System.out.print("Age of the person : " + ageYears + " year, "
+ ageMonths + " months and " + ageDays + " days.");
}
}
Calcuate Age
import java.text.*;
import java.util.*;
public class CalculateAge{
static String errorMessage;
public static boolean isValidDate(String date){
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy");
Date testDate = null;
try
{
testDate = sdf.parse(date);
}
catch (ParseException e)
{
errorMessage = "the date you provided is in an invalid date" + " format.";
return false;
}
if (!sdf.format(testDate).equals(date))
{
errorMessage = "The date that you provided is invalid.";
return false;
}
return true;
}
public static void main(String[]args){
System.out.println("Enter your Date of Birth in format MM-dd-yyyy");
Scanner input=new Scanner(System.in);
String dateOfBirth=input.nextLine() ;
Date d=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("MM-dd-yyyy");
String currentDate=sdf.format(d);
try {
if(isValidDate(dateOfBirth)){
Calendar cal1 = new GregorianCalendar();
Calendar cal2 = new GregorianCalendar();
int age = 0;
int factor = 0;
Date date1 = new SimpleDateFormat("MM-dd-yyyy").parse(dateOfBirth);
Date date2 = new SimpleDateFormat("MM-dd-yyyy").parse(currentDate);
cal1.setTime(date1);
cal2.setTime(date2);
if(cal2.get(Calendar.DAY_OF_YEAR) < cal1.get(Calendar.DAY_OF_YEAR)) {
factor = -1;
}
age = cal2.get(Calendar.YEAR) - cal1.get(Calendar.YEAR) + factor;
System.out.println("Your age is: "+age+" years");
}
else{
System.out.println(errorMessage);
}
}catch (ParseException e) {
System.out.println(e);
}
}
}