JAVA實現萬年曆
阿新 • • 發佈:2018-12-25
package test; /* * 輸出萬年曆 * 設定1900.01.01為起點 1970~1979 1970 4 1971 5 1972 0 1973 1 1974 2 1975 3 1976 5 1977 6 1978 0 1979 1 */ import java.util.Scanner; public class PermanentCalendar { static boolean LeapYear(int year){ //判斷閏年 if(year%400==0 || (year%4==0 && year%100!=0)){ //是閏年 return true; } else{ return false; } } static final int N = 1900; //用N表示起始年份 public static void main(String[] args){ int n = 1;//1900年1月1日 是星期一 int month[] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; //用來儲存月份的天數 int year[] = new int[1001]; //用來儲存每年1月1日是星期幾 year[0] = n; for(int i=1;i<year.length;i++){ int days = 365; if(LeapYear(i+N-1)){//如果它的前一年是閏年則需要加366 days = 366; year[i] = (year[i-1] + days)%7; } else{ year[i] = (year[i-1] + days)%7; } } /* for(int i=0;i<10;i++){ System.out.println(year[i]); } */ int Month ,Year; Scanner in = new Scanner(System.in); System.out.println("請輸入年份在(1900~2900之間):"); Year = in.nextInt(); if(Year>2900 || Year<1900){ System.out.println("輸入年份不合法,請重新輸入!"); return; } //System.out.println(year[Year-1970]); System.out.println("請輸入月份(1~12之間):"); Month = in.nextInt(); if(Month>12 || Month<1){ System.out.println("輸入月份不合法,請重新輸入!"); return; } System.out.println("星期日 " +"星期一 "+"星期二 "+"星期三 "+"星期四 "+"星期五 "+"星期六 "); System.out.println(); if(LeapYear(Year)){ //如果是閏年,2月改為29號 month[2] = 29; } int day=0; //用來記錄當前月的一號是今年的第幾天 for(int i=1;i<Month;i++){ day = day + month[i]; } day = (year[Year-N]+day)%7; for(int i=0;i<7;i++){//輸出控制 if(day == i){ System.out.print(" " + 1 + " "); if(day == 6){ System.out.println(); } break; } else{ System.out.print(" "); } } for(int i=2;i<=month[Month];i++){ if(i<10){ System.out.print(" " + i + " "); } else{ System.out.print(" " + i + " "); } if((day+i-1)%7 == 6){ System.out.println(); } } } }