posts - 1,comments - 0,trackbacks - 0
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)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: