简单万年历
import java.util.*;public class PrintCalendar {/** * @param args */public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("******************欢 迎 使 用 万 年 历******************");System.out.println("请输入年份: ");int year = input.nextInt();System.out.println("请输入月份: ");int month = input.nextInt();boolean isRn;/** 判断是否是闰年 * * 凡是能被4整除但不能被100整除And能被400整除的年份即为闰年 * 闰年366天,平年365天 * **/if (year % 4 == 0 && !(year % 100 == 0) || year % 400 == 0) {isRn = true; // 闰年} else {isRn = false;// 平年}/* 计算输入的年份之前的天数 */int totalDays = 0;/* 输入年距1900年的天数 */for (int i = 1900; i < year; i++) {if (i % 4 == 0 && !(i % 100 == 0) || i % 400 == 0) {totalDays = totalDays + 366; // 闰年366天} else {totalDays = totalDays + 365;//平年365天}}int beforeDays = 0;/** 输入月份距1月1日的天数 */int days = 0;// 每月的天数for (int i = 1; i <= month; i++) {switch (i) {case 1:case 3:case 5:case 7:case 8:case 10:case 12:days = 31;break;case 2:if (isRn) {days = 29;} else {days = 28;}break;default:days = 30;break;}if (i < month) {beforeDays = beforeDays + days;}}totalDays = totalDays + beforeDays;/** 计算输入日期距1900年1月1日的天数* */int firstDayOfMonth;/** 存储当月第一天是星期几:星期日为0,星期一~星期六为1~6 */int temp = 1 + totalDays % 7;if (temp == 7) {firstDayOfMonth = 0; // 周日} else {firstDayOfMonth = temp;}/** 格式化输出万年历* */System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t");/** * 输出每月第一天前的空格数 * 空格数=firstDayOfMonth * **/for (int space = 0; space < firstDayOfMonth; space++) {System.out.print("\t");}for (int i = 1; i <= days; i++) {System.out.print(i + "\t");if((firstDayOfMonth+i)%7==0){//每月日期排列规律:(空格数+当时日期)%1==0System.out.print("\n");}}}}
?