生活随笔
收集整理的這篇文章主要介紹了
Java--简易日历的实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡單日歷的實現分為兩大部分:
輸入想要查找的年份及月份:直接在主函數中,采用消息對話框的形式輸入年份,月份,并通過if循環來判斷輸入的數據是否有錯誤。打印出該年該月的日歷表。
import javax.swing.JOptionPane;public class PrintCalender {public static void main(String[] args) {String yearString = JOptionPane.showInputDialog("請輸入想要產生日歷的年份:");int year = Integer.parseInt(yearString);String monthString = JOptionPane.showInputDialog("請輸入月份:");int month = Integer.parseInt(monthString);if(year < 1800 || month > 12 ||month < 1){System.out.println("輸入的數據有誤,請輸入準確的數據,year > 1800,month< 12 || month > 1");System.exit(0);}printMonth(year,month);}static void printMonth(int year, int month){//打印表頭printMonthTitle(year,month);//打印日歷的主體部分printMonthBody(year,month);}static void printMonthTitle(int year,int month){System.out.println(" " + getMonthName(month) + " " + year );System.out.println("------------------------------------");System.out.println(" Sun Mon Tue Wed Thu Fri Sat");}//1-12月份的英文static String getMonthName(int month){String monthName = null;switch(month){case 1: monthName = "January"; break;case 2: monthName = "February"; break;case 3: monthName = "March"; break;case 4: monthName = "April"; break;case 5: monthName = "May"; break;case 6: monthName = "June"; break;case 7: monthName = "July"; break;case 8: monthName = "August"; break;case 9: monthName = "September"; break;case 10: monthName = "October"; break;case 11: monthName = "November"; break;case 12: monthName = "December"; break;}return monthName;}//打印主體部分,也就是對應月份一有多少天,1號對應星期幾static void printMonthBody(int year,int month){int startDay = getStarDay(year,month);//每月天數int numberOfDayInMonth = getNumberOfDaysInMonth(year,month);int i = 0;for(i = 0;i < startDay; i++)System.out.print(" ");for(i = 1;i <= numberOfDayInMonth;i++){if(i < 10)System.out.print(" " + i);else System.out.print(" " + i);if((i + startDay) % 7 == 0)System.out.println();}System.out.println();}//返回所求月份第一天是周幾static int getStarDay(int year,int month){int startDay1800 = 4;int totalNumberOfDays = getTotalNumberOfDays(year,month);return (startDay1800 + totalNumberOfDays) % 7;}//求從1800年1月1日到現在一共有多少天static int getTotalNumberOfDays(int year,int month){int total = 0;//計算年的天數for(int i = 1800;i < year;i++)if(isLeapYear(year))total += 366;elsetotal += 365;//計算月的天數for(int j = 1;j < month;j++)total += getNumberOfDaysInMonth(year,month);return total;}//每個月的天數static int getNumberOfDaysInMonth(int year,int month){if(month == 1||month == 3||month == 5||month == 7||month ==8||month == 10||month == 12)return 31;if(month == 4||month == 6||month == 9||month == 11)return 30;if(month == 2)return isLeapYear(year)? 29 : 28;return 0;}//判斷是否是閏年static boolean isLeapYear(int year){return (year % 400 == 0||year % 4 ==0 && year % 100 == 0);}
}
總結
以上是生活随笔為你收集整理的Java--简易日历的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。