package com.softeem.lesson06.oop.method;import java.util.Scanner;/**
* 创建一个方法,计算从1900年1月1日到当前月份上一个月的总天数,并返回总天数值
* @author 信仰斌
*
*/publicclassMyCalendar{
Scanner sc =newScanner(System.in);/**
* 判断是否是闰年
* @param y year
* @return true-闰年 false-平年
*/publicbooleanisLeapYear(int y){// 闰年则返回truereturn y %4==0&& y %100!=0|| y %400==0;}/**
* 计算每月的天数
* @param y year
* @param m month
* @return days
*/publicintgetDaysOfMonth(int y,int m){// 判断每月有多少天switch(m){case4:case6:case9:case11:return30;case2:// 闰年2月29天,平年28天returnisLeapYear(y)?29:28;default:return31;}}/**
* 到上一个月的总天数
* @param y year
* @param m month
* @return days
*/publicintgetDays(int y,int m){// 初始总天数int days =0;// 计算每年的天数for(int i =1900; i < y; i ++){// 闰年366,平年365
days +=isLeapYear(i)?366:365;}// 计算每月的天数for(int i =1; i < m; i ++){// 累加每月的天数
days +=getDaysOfMonth(y, i);}// 返回计算值return days;}// 绘制日历publicvoidprintCalendar(){
System.out.print("输入年份:");int year = sc.nextInt();
System.out.print("输入月份:");int month = sc.nextInt();// 打印标题
System.out.println("=================="+ year +"【年】"+ month +"【月】"+"=================");
System.out.println("周一\t周二\t周三\t周四\t周五\t周六\t周日");// 打印当前月数之前的空格for(int i =1; i <=(getDays(year,month)%7); i++){
System.out.print("\t");}// 打印日历for(int i =1; i <=getDaysOfMonth(year, month); i ++){
System.out.print(i +"\t");// 每隔七天换行重新输出if((i +getDays(year,month))%7==0){
System.out.println();}}}publicstaticvoidmain(String[] args){
MyCalendar mc =newMyCalendar();// boolean b = mc.isLeapYear(2020);// System.out.println(b ? "是闰年" : "不是闰年");// // // 创建一个方法,获取一个指定年份,月份单月的总天数// int days = mc.getDaysOfMonth(2019, 2);// System.out.println(days);// // int year = 2020, month = 11;// int totalDays = mc.getDays(year, month);// System.out.println("1900年1月1日到" + year + "年" + month + "月共" + totalDays + "天");
mc.printCalendar();}}