import javax.swing.JOptionPane;
public class PrintCalendar {
public static void main(String [] args){
String yearString = JOptionPane.showInputDialog(
"Enter full year (e.g.,2001):");
int year = Integer.parseInt(yearString);
String monthString = JOptionPane.showInputDialog(
"Enter mouth as number between 1 and 12 ;");
int month = Integer.parseInt(monthString);
printMonth(year,month);
}
public static void printMonth(int year, int month){
printMonthTitle(year, month);
printMonthBody(year, month);
}
public static void printMonthTitle(int year, int month){
System.out.println(" "+getMonthName(month)
+" "+year);
System.out.println("--------------------------------");
System.out.println(" Sun Mon Tue Wed Thu Fri Sat");
}
public static void printMonthBody(int year, int month){
int startDay = getStartDay(year,month);
int numberOfDayInMonth = getNumberOfDayInMonth(year, month);
int i = 0;
for(i=0; i<startDay; i++)
System.out.print(" ");
for(i=1; i<=numberOfDayInMonth; i++){
if(i<10)
System.out.print(" "+i);
else
System.out.print(" "+i);
if((i+startDay)%7==0)
System.out.println();
}
}
public static String getMonthName(int month){
String monthName = null;
switch(month){
case 1: monthName = "January";break;
case 2: monthName = "February";break;
case 3: monthName = "March";break;
case 4: monthName = "April";break;
case 5: monthName = "May";break;
case 6: monthName = "June";break;
case 7: monthName = "July";break;
case 8: monthName = "August";break;
case 9: monthName = "September";break;
case 10: monthName = "October";break;
case 11: monthName = "November";break;
case 12: monthName = "December";break;
}
return monthName;
}
public static int getStartDay(int year, int month){
int startDay1800 = 3;
int totalNumberOfDays = getTotalNumberOfDays(year, month);
return (totalNumberOfDays + startDay1800)%7;
}
public static int getNumberOfDayInMonth(int year, int month){
int returnmonth = 0;
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: returnmonth = 31;break;
case 4:
case 6:
case 9:
case 11: returnmonth = 31; break;
case 2: returnmonth = isLeapYear(year) ? 29:28; break;
}
return returnmonth;
}
public static int getTotalNumberOfDays(int year, int month){
int total = 0;
for(int i = 1800; i<year; i++)
if(isLeapYear(i))
total += 366;
else
total += 365;
for(int i=1; i<month; i++){
total = total +getNumberOfDayInMonth(year, i);
}
return total;
}
public static boolean isLeapYear(int year){
return (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0));
}
}
posted on 2010-04-25 11:10
ln_ydc 阅读(77)
评论(0) 编辑 收藏