根据用户的输入年月打印这个月的日历表,Java的简单实现。
import java.util.Scanner;
public class EasyCalendar {
static int month;
static int year;
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
year=in.nextInt();
month=in.nextInt();
int sum=f(year,month);
calendar(sum+1);
}
private static void calendar(int sum) {
System.out.println("日\t一\t二\t三\t四\t五\t六");
int newDay=sum%7;
for(int i=1;i<=newDay;i++) {
System.out.print("\t");
}
for(int i=1;i<=fa(month);i++) {
if(sum%7==6) {
System.out.print(i+"\n");
}else
System.out.print(i+"\t");
sum++;
}
}
private static int fa(int i) {
int sum3=0;
if(i==2) {
if(leapYear(year)) {
sum3+=29;
}else
sum3+=28;
}else
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) {
sum3+=31;
}else
sum3+=30;
return sum3;
}
private static int f(int year, int month) {
int sum=0;
for(int i=1900;i<year;i++) {
if(leapYear(i)) {
sum+=366;
}else
sum+=365;
}
for(int i=1;i<month;i++) {
if(i==2) {
if(leapYear(year)) {
sum+=29;
}else
sum+=28;
}else
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) {
sum+=31;
}else
sum+=30;
}
return sum;
}
private static boolean leapYear(int year) {
return year%4==0&&year%100!=0||year%400==0;
}
}