import java.util.Scanner;
public class PerpetualCalendar{
public static void main(String[] args){
Scanner scan=new Scanner(System.in);
System.out.print("请输入年份:");
int year =scan.nextInt();
System.out.print("请输入月份:");
int month=scan.nextInt();
//计算1900~输入年的总天数
int allDayOfYear=new allDayOfYear(1900,year);
//计算1~输入月的总天数
int allDayOfMonth=new allDayOfMonth(1,month);
//全部天数=年的总天数+月的总天数+1
int allDay=allDayOfYear+allDayOfMonth+1;
//获取星期
int week=getWeek(allDay);
//获取当月天数
int day=getDay(year,month);
//打印日期
printCalendar(year,month,day,week);
}
//打印日期
public static void printCalendar(int year,int month,int day, int week){
System.out.println("-----"+year+"年--"+month+"月 ---");
System.out.println("周一\t周二\t周三\t周四\t周五\t周六\t周日");
int num=0;
for(int i=1;i<week;i++){
System.out.print("\t");
num++
}
for(int i=1;i<=day;i++){
System.out.println(i+"\t");
num++;
if(num%7==0){
System.out.println();
}
}
}
//获取星期
public static int getWeek(int allDay){
if(allDay%7==0){
return 7;
}
return allDay%7;
}
//获取开始月份到结束月份的天数
public static int getAllDayOfMonth(int year,int startMonth,int endMonth){
int allDayOfMonth=0;
for(int i=startMonth;i<endMonth;i++){
allDayOfMonth+=getDay(year,i);
}return allDayOfMonth;
}
//获取当月天数
public static getDay(int year,int month){
int day=0;
switch(month){
case 1:case 3: case 5: case 7: case 8: case 10: case 12:
day=31;break;
case 4: case 6: case 9: case 11:
day=30;break;
case 2:
if(isLeapYear(year)){
day=29;
}else{
day=28;
}
break;
}return day;
}
//获取开始年到结束年的天数
Public static int getAllDayOfYear(int startYear,int endYear){
int allDayOfYear=0;
for(int i=startYear;i<endYear;i++){
if(isLeapYear(i)){
allDayOfYear+=366;
}else{
allDayOfYear+=365;
}
}
return allDayOfYear;
}
//判断是否是闰年
public static boolean isLeapYear(int year){
if(year%4==0&&year%100!=0||year%400==0){
return true;
}return false;
}
}
04-15
03-06
12-03
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交