編寫萬年曆:輸入一個年份,再輸入一個月份,把那個月的日曆打印出來(1900年1月1日是星期一)
阿新 • • 發佈:2020-07-20
主方法程式碼:
1 public static void main(String[] args) { 2 Scanner in = new Scanner(System.in); 3 //輸入年份 4 System.out.println("請輸入年份(1900之後的):"); 5 int year = in.nextInt(); 6 //輸入月份 7 System.out.println("請輸入月份:"); 8 int month = in.nextInt(); 9 //判斷資料輸入是否有誤 10 if (year < 1900 || month >12 || month < 1){ 11 System.out.println("對不起,你輸入的資料有誤!"); 12 return; 13 } 14 //獲取1900年到輸入年份的總天數 15 int allDayOfYear = getAllDayOfYear(1900,year); 16 17 //獲取輸入年份從1月到輸入月份的總天數 18 int allDayOfMonth = getAllDayOfMonth(year,1,month);19 20 //獲得總天數 21 int allDay = allDayOfYear + allDayOfMonth; 22 //列印日期 23 printCalendar(allDay,getDayOfMonth(year,month)); 24 25 }
計算1900到輸入年份的總天數的方法程式碼
public static int getAllDayOfYear(int startYear,int endYear){ //定義年的總天數 int allDayOfYear = 0;for (int i = startYear; i < endYear; i++) { if (judgeLeapYear(i)){ allDayOfYear += 366; }else { allDayOfYear +=365; } } return allDayOfYear; }
計算輸入年份從1月到輸入月份的總天數方法程式碼
1 public static int getAllDayOfMonth(int year,int startMonth,int endMonth){ 2 int allDayOfMonth = 0; 3 for (int i = startMonth; i < endMonth; i++) { 4 allDayOfMonth += getDayOfMonth(year,i); 5 } 6 return allDayOfMonth; 7 }
獲得每一個月的天數方法程式碼
1 public static int getDayOfMonth(int year,int month){ 2 //定義月的天數 3 int day = 0; 4 switch (month){ 5 case 1: 6 case 3: 7 case 5: 8 case 7: 9 case 8: 10 case 10: 11 case 12: 12 day = 31; 13 break; 14 case 4: 15 case 6: 16 case 9: 17 case 11: 18 day = 30; 19 break; 20 case 2: 21 if (judgeLeapYear(year)){ 22 day = 29; 23 }else { 24 day = 28; 25 } 26 break; 27 } 28 return day; 29 }
判斷是否為閏年方法程式碼
1 public static boolean judgeLeapYear(int year){ 2 if (year % 4 == 0 && year % 100 !=0 || year % 400 == 0){ 3 return true; 4 } 5 return false; 6 }
列印日曆方法程式碼
1 public static void printCalendar(int allDay,int day){ 2 //列印開頭的資訊 3 System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六"); 4 //換行變數 5 int num = 0; 6 //計算輸入的月份1號是星期幾 7 int week = allDay % 7 +1; 8 for (int i = 0; i < week; i++) { 9 System.out.print("\t\t"); 10 num++; 11 } 12 //列印日期 13 for (int i = 1; i <= day; i++) { 14 //判斷 15 if (num %7 == 0){ 16 System.out.println(); 17 } 18 System.out.print(i+"\t\t"); 19 num++; 20 } 21 }