根据用户的输入年月打印这个月的日历表,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 ;
}
}