使用Java實現萬年曆的格式列印
阿新 • • 發佈:2018-12-25
四、關鍵程式碼:import java.util.Scanner; /** * 1. 定義萬年曆類,定義年月日屬性 2.編寫接收年判斷是否是閏年的方法,並返回一個布林值 3.編寫接收年月日計算總天數方法,並返回總天數 4.編寫接收年月日輸出該日是星期幾方法,已知1900年1月1日是星期一。 5.編寫可無限迴圈接收年月日列印該月日曆方法。 * @author caiyu * */ public class shixun10 { Scanner i = new Scanner(System.in); public int year; public int month; public int day; // 判斷是否為閏年 public boolean isRun(int year) { boolean isRn = false; isRn = ((year % 4 == 0) && !(year % 100 == 0) || year % 400 == 0); return isRn; } // 該月有多少天 public int monthSumDay(int yaar, int month) { int day = 0; switch (month) { case 2: if (isRun(year)) { day = 29; } else { day = 28; } break; case 4: case 6: case 9: case 11: day = 30; break; default: day = 31; break; } return day; } // 得到至這一天是這一年的多少天 public int totalDay(int year, int month, int day) { int sumDay = 0;// 總天數 // 難點一 for (int i = 1900; i < year; i++) { if (isRun(i)) { sumDay = sumDay + 366;// 閏年366天 } else { sumDay = sumDay + 365;// 平年365天 } } // 計算當年距離1900年1月1日的總天數 // 再算當年的總天數 int beforeDay = 0; int d = 0;// 當月日期數 // 難點二 for (int i = 1; i < month; i++) { switch (i) { case 2: if (isRun(year)) { d = 29; } else { d = 28; } break; case 4: case 6: case 9: case 11: d = 30; break; default: d = 31; break; }// switch 結束 beforeDay = beforeDay + d; }// 當年的總天數 迴圈結束 // 累加求出距離 1900年1月1日的總天數 sumDay = sumDay + beforeDay; return sumDay; } // 接收年月日輸出該日是星期幾方法,已知1900年1月1日是星期一 public int weekNum(int year, int month, int day) { int thisMonthFirstDay = 0;// 當月第一天是星期幾 int temp = 1 + totalDay(year, month, day) % 7; if (temp != 7) { thisMonthFirstDay = temp; } return thisMonthFirstDay; } // 接收年月日列印該月日曆方法 public void printCalendar(int year, int month, int day) { // 呼叫上面的方法 int mfd = weekNum(year, month, day); int sumDay = totalDay(year, month, day); int monthSum = monthSumDay(year, month); /* 格式輸出日曆 */ System.out.println("\n星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六"); for (int i = 0; i < mfd; i++) { System.out.print("\t"); } for (int i = 1; i <= monthSum; i++) { System.out.print(i + "\t"); // 難點三 if ((sumDay + i - 1) % 7 == 5) {// 是星期六 則要換行 System.out.println(); } } System.out.println(); } // 顯示萬年曆 public void show() { System.out.println("******JVav萬年曆程式*****"); String isRun = "y"; while (isRun != "n") { System.out.print("請輸入年:"); int year = i.nextInt(); System.out.print("請輸入月:"); int month = i.nextInt(); System.out.print("請輸入日:"); int day = i.nextInt(); this.printCalendar(year, month, day); System.out.print("\n是否繼續(y/n):"); isRun = i.next(); } } }