1. 程式人生 > >萬年曆-java實現簡單萬年曆

萬年曆-java實現簡單萬年曆

萬年曆

這裡寫圖片描述

public class WanNianLi {
     public static void main(String[] args){
            //思路:
            //1、構建Scanner掃描器類的物件
            Scanner input = new Scanner(System.in);

            //2、從控制檯接收使用者錄入的年份、月份
            System.out.println("輸入年");
            int year  = input.nextInt();
            System.out.println("輸入月"
); int month = input.nextInt(); //3、獲得1900年距離當前年份上一年的總天數 int totalDays = getFromNowYearTo1900TotalDays(year); //4、獲得當前年份所經過的天數 int totalDaysThisYear = getNowYearPassedTotalDays(year,month); //5、求得給定月份第一天的星期數 int week = (totalDays + totalDaysThisYear +1
) % 7;//星期日是,week = 0 //6、格式化輸出日曆 formatCalendarOutput(week,year,month); } /** *格式化輸出日曆 *@param week:當前月份第一天的星期數 *@param year:當前年份 *@param month:當前月份 */ public static void formatCalendarOutput(int week,int year,int month){ int
cnt = 0;//計數器,記錄空白數和日期數的和 //1) 打印表頭 System.out.println("星期日\t\t星期一\t\t星期二\t\t星期三\t\t星期四\t\t星期五\t\t星期六"); //2)列印空白(觀察星期與之前空個數之間的規律) for(int i=1;i<= week;i++){ System.out.print("\t\t"); cnt++; } //3) 列印日曆 for(int i=1;i<=getNowMonthDays(year,month);i++){ System.out.print(i+"\t\t"); cnt++; //若記錄空白數和日期數的和是七的倍數,應該換行輸出 if(cnt % 7 == 0){ System.out.println(); } } } /** *判斷給定的年份是否為閏年 *@param year:給定的年份 *@return true:閏年;false:平年 */ public static boolean isLeapYear(int year){ return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); } /** *根據引數指定的年份,月份,求出當前月的總天數 *@param year:年份 *@param month:月份 *@return 月的總天數 */ public static int getNowMonthDays(int year,int month){//year:設計該引數的原因,2月份根據年份是否是閏年來確定其天數的 switch(month){ case 2: return isLeapYear(year) ? 29 : 28; case 4: case 6: case 9: case 11: return 30; default: return 31; } } /** *獲得當前年份的上一年距離1900年所經過的總天數 *@param year 當前年份 *@return 總天數 */ public static int getFromNowYearTo1900TotalDays(int year){ int totalDays = 0; for(int i = 1900; i< year; i++){//i:年份 totalDays += isLeapYear(i) ? 366 : 365; } return totalDays; } /** *求出當前年份經過的總天數(從當前年的1月1日到給定月份的上一個月最末一天) *@param year:年份 *@param month:月份 *@return 總天數 */ public static int getNowYearPassedTotalDays(int year,int month){ int totalDays = 0; for(int i=1;i< month;i++){//i:月份 totalDays += getNowMonthDays(year,i); } return totalDays; } }

轉載希望標明出處,謝謝