zoukankan      html  css  js  c++  java
  • 打印指定年,月的日历

    输入 年 月 输出日历

    package com.studyJava.calender;
    
    import java.util.Scanner;
    
    /**
     * 输出给定年份,月份的日历
     * 
     * @author ywf
     * 
     */
    public class CalenderTest {
    
        // 1900年1月1日是星期一
        private final int start = 1900;
        private final int week_start = 1;
    
        /**
         * 输出月份对应的英文标识
         * 
         * @param n
         * @return
         */
        public String getMonthName(int n) {
            String str = "";
            switch (n) {
            case 1:
                str = "January";
                break;
            case 2:
                str = "February";
                break;
            case 3:
                str = "March";
                break;
            case 4:
                str = "Aprial";
                break;
            case 5:
                str = "May";
                break;
            case 6:
                str = "June";
                break;
            case 7:
                str = "July";
                break;
            case 8:
                str = "August";
                break;
            case 9:
                str = "September";
                break;
            case 10:
                str = "October";
                break;
            case 11:
                str = "November";
                break;
            case 12:
                str = "March";
                break;
            default:
                str = "输入月份不合理,请重新输入";
            }
            return str;
        }
    
        /**
         * 得到year年第month月的天数
         * 
         * @param year
         * @param month
         * @return
         */
        public int getDays(int year, int month) {
            int days = 0;
            switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                days = 31;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                days = 30;
                break;
            case 2:
                if (isRunyear(year)) {
                    days = 29;
                } else {
                    days = 28;
                }
                break;
            }
            return days;
        }
    
        /**
         * 判断year年是否是闰年
         * 
         * @param year
         * @return
         */
        private boolean isRunyear(int year) {
            if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
                return true;
            } else {
                return false;
            }
        }
    
        /**
         * 得到从1900年1月1日到year年month月1日的总天数
         * 
         * @param year
         * @param month
         * @return
         */
        public int getweekStart(int year, int month) {
            int daysall = 0;
            for (int i = start; i < year; i++) {
                if (isRunyear(i)) {
                    daysall += 366;
                } else {
                    daysall += 365;
                }
            }
            for (int i = 1; i < month; i++) {
                daysall += getDays(year, i);
            }
            return (daysall + week_start) % 7;
        }
    
        /**
         * 打印日历标题
         * 
         * @param year
         * @param month
         */
        public static void printCalenderTitle(String year, String month) {
            System.out.println("         " + year + " " + month + "      ");
            String str = "Sun\tMon\tTue\tWed\tThu\tFri\tSat";
            for (int i = 0; i < str.length(); i++) {
                System.out.print("_");
            }
            System.out.println();
            System.out.println("Sun\tMon\tTue\tWed\tThu\tFri\tSat");
    
        }
    
        /**
         * 打印月份体
         * 
         * @param year
         * @param month
         */
        public void printMonthBody(int year, int month) {
            int weekStart = getweekStart(year, month);// month月第一天的星期
            int days = getDays(year, month);// month月的天数
            int num = 0;
            for (int i = 0; i < weekStart; i++) {
                System.out.print("\t");
                num++;
            }
            for (int i = 0; i < days; i++) {
                if ((i + num) % 7 == 0) {
                    System.out.println();
                }
                System.out.print(i + 1 + "\t");
            }
        }
    
        public static void main(String[] args) {
            CalenderTest test = new CalenderTest();
            Scanner input = new Scanner(System.in);
            System.out.print("Enter full year (e.g.,2001) :");
            int year = input.nextInt();
            System.out.print("\nEnter month in number between 1 and 12 :");
            int month = input.nextInt();
            String yearString = String.valueOf(year);
            String monthString = test.getMonthName(month);
            test.printCalenderTitle(yearString, monthString);
            test.printMonthBody(year, month);
    
        }
    
    }
  • 相关阅读:
    python练习--1、简易登录接口
    python--1、入门
    mysql数据库安装
    第八章总结
    第七章总结
    第三周总结
    第二周总结
    if、switch语句
    2章总结
    1月14日总结
  • 原文地址:https://www.cnblogs.com/yuwenfeng/p/3092127.html
Copyright © 2011-2022 走看看