Sunday, 9 November 2014

To accept date, day name on 1st January and display the day name for the given date in words

// To accept date, day name on 1st January and display the day name for the given date
// date in words
import java.util.* ;
class DateQ1_2007 {
static int daysOfMonth[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
static int dd,mm,yy, wkday;
static void validateInput(){ // validates the input date and week day
if(yy<1 || yy>9999) { // validates year
System.out.println("INVALID YEAR");
System.exit(0);

}
if(mm<1 || mm>12) { // validates month
System.out.println("INVALID MONTH");
System.exit(0);
}
if(dd<1 || dd>daysOfMonth[mm]) { // validates day
System.out.println("INVALID DAY");
System.exit(0);

}
if(wkday<1 || wkday>7) {
System.out.println("INVALID WEEK DAY");
System.exit(0);
}
}
static int isLeap(int y){
if((y%4==0 && y%100!=0)|| y%400==0) return 1;
return 0;
}
static void extractDate(String date) // separates day, month, and year from the entered date
{
StringTokenizer st=new StringTokenizer(date,"/");
for(int i=3;st.hasMoreTokens();i--) {
if(i>2) dd=Integer.parseInt(st.nextToken()); // store day
else if(i>1)mm=Integer.parseInt(st.nextToken()); // store month
else yy=Integer.parseInt(st.nextToken()); // store year
}
}
public static void main(String args []) throws Exception {
Scanner sc=new Scanner(System.in);
String daysOfWeek[]={"","SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY",
};
String date,firstday;
int days,i;
System.out.print("Date\t: ");
date=sc.next();
System.out.print("Day on 1st January\t: ");
firstday=sc.next();
extractDate(date); // separates day, month, and year
for(i=1;i<=7;i++)
if(firstday.equalsIgnoreCase(daysOfWeek[i])){
wkday=i; // store week day number(1-7)
break;
}
validateInput(); // validate input data
daysOfMonth[2]+=isLeap(yy); // check for days in February
// converts input day number into day, month, and year
days=0;
for(i=1;i<mm;i++)
days+=daysOfMonth[i]; // finds total days elapsed before the target month
days+=dd-1; // finds total days elapsed before the target day
days+=wkday;
wkday=days%7; // find the target week day number
System.out.println("\nOUTPUT :");
System.out.print("\nDay on "+date+"\t: "+daysOfWeek[wkday]);
} // end of main
} // end of class 

No comments:

Post a Comment