import java.util.Scanner; public class P06 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); System.out.print("请输入一个年份(大于1900年):"); int year=input.nextInt(); while(year<1900){ System.out.print("输入的年份有错误,请重新输入:"); year=input.nextInt(); } System.out.print("请输入一个月份:"); int month=input.nextInt(); while(month<1||month>12){ System.out.print("输入的月份有错误,请重新输入:"); month=input.nextInt(); } // if (isLeapYear(year)) { // System.out.println(year+"年是闰年"); // } // else{ // System.out.println(year+"年不是闰年"); // } // // System.out.println(year+"年"+month+"月有"+getDaysOfMonth(year,month)+"天"); // // System.out.println(year+"年"+month+"月1号是该年的第"+getDayOfThisYear(year, month)+"天"); // // System.out.println("从1900年到"+year+"年之间(不包括该年)共经过"+getCrossDays(year)+"天"); // System.out.println("日\t一\t二\t三\t四\t五\t六"); for (int i = 0; i <isDayOfWeek(year, month); i++) { System.out.print(" \t"); } for (int i =1; i <=getDaysOfMonth(year, month); i++) { System.out.print(i+"\t"); if (i==7-isDayOfWeek(year, month)||(i-7+isDayOfWeek(year, month))%7==0) { System.out.println(); } } } /** * 判断是否是闰年 * @param year * @return */ public static boolean isLeapYear(int year){ return year%4==0 && year%100!=0 || year%400==0; } /** * 返回该月有多少天 * @param year * @param month * @return */ public static int getDaysOfMonth(int year,int month){ if (month==2) { if (isLeapYear(year)) { return 29; } else{ return 28; } } else if((month<8 && month%2!=0)||(month>7&&month%2==0)){ return 31; } else { return 30; } } /** * 返回该月一号是该年中的第几天 * @param year * @param month * @return */ public static int getDayOfThisYear(int year,int month){ int sum=0; for (int i = 1; i <=month-1; i++) { sum+=getDaysOfMonth(year, i); } return sum+1; } /** * 计算从1900年到该年之间(不包括该年)共经过多少天 * @param year * @return */ public static int getCrossDays(int year){ int sum=0; for (int i = 1900; i < year;i++) { for (int j = 1; j <=12; j++) { sum+=getDaysOfMonth(i, j); } } return sum; } /** * 计算该月1号是星期几(已知1900-1-1是星期一) * @param year * @param month * @return 返回(0~6)对应星期日至星期六 */ public static int isDayOfWeek(int year,int month){ int sum=getCrossDays(year)+getDayOfThisYear(year, month); return sum%7; } }
时间: 2024-07-28 16:58:51