您的位置:首页 > 编程语言 > Java开发

PrintCalendar

2014-04-27 16:52 274 查看
import java.util.Scanner;

public class PrintCalendar {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        

        System.out.print("Enter a year: ");

        int year = 0;

        while(year < 1800)

            year = input.nextInt();

        

        System.out.print("Enter a month: ");

        int month = 0;

        while(month < 1 || month >12)

            month = input.nextInt();

        

        printCalendar(year, month);

    

    }

    

    static final int MONTH_DAYS[] = {0, 31, 59, 90, 120, 151, 181,

            212, 243, 273, 304, 334, 365};

    

    public static void printCalendar(int year, int month) {

        printMonthTitle(year, month);

        printMonthBody(year, month);

    }

    

    public static void printMonthTitle(int year, int month) {

        System.out.println(" "+year + " " + getMonthName(month));

        System.out.println(" SUN MON TUE WED THU FRI SAT");

        

    }

    

    public static String getMonthName(int month) {

        switch(month) {

        case 1: return "January";

        case 2: return "February";

        case 3: return "March";

        case 4: return "April";

        case 5: return "May";

        case 6: return "June";

        case 7: return "July";

        case 8: return "August";

        case 9: return "September";

        case 10: return "October";

        case 11: return "November";

        default: return "December";

        }

    }

    

    public static void printMonthBody(int year, int month) {

        int startDay = getStartDay(year, month);

        int numberOfDaysInMonth =

                getNumberOfDaysInMonth(year, month);

        for(int i = 0; i < startDay; i++)

            System.out.print("    ");

        for(int i = 0; i < numberOfDaysInMonth; i++) {

            if((i + startDay) % 7 == 0)

                System.out.printf("\n%4s", i + 1);

            else

                System.out.printf("%4s", i + 1);

        }

    }

    

    public static int getStartDay(int year, int month) {

        return

                (getTotalNumberOfDays(year, month) + 3)% 7;

    }

    

    public static int getTotalNumberOfDays(

            int year, int month) {

        int totalNumberOfDays = 0;

        

        for(int i = 1800; i < year; i++) {

            if(isLeapYear(i))

                totalNumberOfDays += 366;

            else totalNumberOfDays += 365;

            }

        totalNumberOfDays += MONTH_DAYS[month - 1];

        

        if(isLeapYear(year) && month > 1)

            return totalNumberOfDays++;

        else return totalNumberOfDays;

    }

    

    public static int getNumberOfDaysInMonth(

            int year, int month) {

        if (isLeapYear(year) == true && month == 2)

            return MONTH_DAYS[month] - MONTH_DAYS[month - 1] + 1;

        else return MONTH_DAYS[month] - MONTH_DAYS[month - 1];    

    }

    

    public static boolean isLeapYear(int year) {

        return year % 400 ==0 || year % 4 ==0 && year % 100 != 0;

    }    

    

}

Enter a year: 2014

Enter a month: 4

 2014 April

 SUN MON TUE WED THU FRI SAT

           1   2   3   4   5

   6   7   8   9  10  11  12

  13  14  15  16  17  18  19

  20  21  22  23  24  25  26

  27  28  29  30
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java