// To accept date of birth and current date and find the age
import java.util.* ;
class DateQ1_2007 {
static int daysOfMonth[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
static void validateInput(int d,int m,int y){ // validates the input date
if(y<1 || y>9999) { // validates year
System.out.println("INVALID YEAR");
System.exit(0);
}
if(m<1 || m>12) { // validates month
System.out.println("INVALID MONTH");
System.exit(0);
}
if(d<1 || d>daysOfMonth[m]) { // validates day
System.out.println("INVALID DAY");
System.exit(0);
}
}
static int isLeap(int y){
if((y%4==0 && y%100!=0)|| y%400==0) return 1;
return 0;
}
public static void main(String args []) throws Exception {
Scanner sc=new Scanner(System.in);
String dob,currdate;
int n,d,dd1,dd2,m,mm1,mm2,y,yy1,yy2;
StringTokenizer st;
System.out.print("Date of birth: ");
dob="1/1/1971";//sc.next();
System.out.print("Current date\t: ");
currdate="20/1/1971";//sc.next();
dd1=dd2=mm1=mm2=yy1=yy2=0;
st=new StringTokenizer(dob,"/");
for(int i=3;st.hasMoreTokens();i--) { // separates day,month,and year
if(i>2) dd1=Integer.parseInt(st.nextToken()); // store day
else if(i>1)mm1=Integer.parseInt(st.nextToken()); // store month
else yy1=Integer.parseInt(st.nextToken()); // store year
}
st=new StringTokenizer(currdate,"/");
for(int i=3;st.hasMoreTokens();i--) { // separates day,month,and year
if(i>2) dd2=Integer.parseInt(st.nextToken()); // store day
else if(i>1)mm2=Integer.parseInt(st.nextToken()); // store month
else yy2=Integer.parseInt(st.nextToken()); // store year
}
validateInput(dd1,mm1,yy1); // validate input dob
validateInput(dd2,mm2,yy2); // validate input currdate
daysOfMonth[2]+=isLeap(yy1); // check for days in February
n=daysOfMonth[mm1];
d=n-dd1+(dd2-1);
m=0;
while (yy1!=yy2 || mm1!=mm2) { // finds total months elapsed before the target month
++mm1;
++m;
if(mm1>12){
mm1=1;
++yy1;
}
}
m+=d/n;
d%=n;
y=m/12; // converts months into years
if(y==0) --m; // age is less than 1 year
else m%=12; // age is more than 1 year
System.out.println("\nOUTPUT:");
System.out.println("\nAge is:");
System.out.println(y+(y==1?" year":" years"));
System.out.println(m+(m==1?" month":" months"));
System.out.println(d+(d==1?" day":" days"));
} // end of main
} // end of class
import java.util.* ;
class DateQ1_2007 {
static int daysOfMonth[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
static void validateInput(int d,int m,int y){ // validates the input date
if(y<1 || y>9999) { // validates year
System.out.println("INVALID YEAR");
System.exit(0);
}
if(m<1 || m>12) { // validates month
System.out.println("INVALID MONTH");
System.exit(0);
}
if(d<1 || d>daysOfMonth[m]) { // validates day
System.out.println("INVALID DAY");
System.exit(0);
}
}
static int isLeap(int y){
if((y%4==0 && y%100!=0)|| y%400==0) return 1;
return 0;
}
public static void main(String args []) throws Exception {
Scanner sc=new Scanner(System.in);
String dob,currdate;
int n,d,dd1,dd2,m,mm1,mm2,y,yy1,yy2;
StringTokenizer st;
System.out.print("Date of birth: ");
dob="1/1/1971";//sc.next();
System.out.print("Current date\t: ");
currdate="20/1/1971";//sc.next();
dd1=dd2=mm1=mm2=yy1=yy2=0;
st=new StringTokenizer(dob,"/");
for(int i=3;st.hasMoreTokens();i--) { // separates day,month,and year
if(i>2) dd1=Integer.parseInt(st.nextToken()); // store day
else if(i>1)mm1=Integer.parseInt(st.nextToken()); // store month
else yy1=Integer.parseInt(st.nextToken()); // store year
}
st=new StringTokenizer(currdate,"/");
for(int i=3;st.hasMoreTokens();i--) { // separates day,month,and year
if(i>2) dd2=Integer.parseInt(st.nextToken()); // store day
else if(i>1)mm2=Integer.parseInt(st.nextToken()); // store month
else yy2=Integer.parseInt(st.nextToken()); // store year
}
validateInput(dd1,mm1,yy1); // validate input dob
validateInput(dd2,mm2,yy2); // validate input currdate
daysOfMonth[2]+=isLeap(yy1); // check for days in February
n=daysOfMonth[mm1];
d=n-dd1+(dd2-1);
m=0;
while (yy1!=yy2 || mm1!=mm2) { // finds total months elapsed before the target month
++mm1;
++m;
if(mm1>12){
mm1=1;
++yy1;
}
}
m+=d/n;
d%=n;
y=m/12; // converts months into years
if(y==0) --m; // age is less than 1 year
else m%=12; // age is more than 1 year
System.out.println("\nOUTPUT:");
System.out.println("\nAge is:");
System.out.println(y+(y==1?" year":" years"));
System.out.println(m+(m==1?" month":" months"));
System.out.println(d+(d==1?" day":" days"));
} // end of main
} // end of class
No comments:
Post a Comment