题目:
解答:
import java.util.Scanner;
public class Exercise_5 {
static int left_day=0;
public static boolean year_judge(int year) {
if(year%100==0) {
if(year%400==0) return true;
else return false;
}
else {
if(year%4==0)return true;
else return false;
}
}
public static int total_day_judge(int year,String month) {
int total_day=0;
boolean mark=year_judge(year);
switch(month) {
case"January":total_day=31;break;
case"February":{
if(mark==true)total_day=29;
if(mark==false)total_day=28;
break;
}
case"March":total_day=31;break;
case"April":total_day=30;break;
case"May":total_day=31;break;
case"June":total_day=30;break;
case"July":total_day=31;break;
case"August":total_day=31;break;
case"September":total_day=30;break;
case"October":total_day=31;break;
case"November":total_day=30;break;
case"December":total_day=31;break;
}
return total_day;
}
public static void month_calender_generator(int year,String month,int first_day) {
int total_day=total_day_judge(year,month);
int we_day=1;
System.out.printf("\t\t%9s%8s\n",month,year);
System.out.printf("---------------------------------------------------\n");
System.out.printf("Sun\tMon\tTue\tWed\tThu\tFri\tSat\n");
for(int i=1;i<=first_day;i++) {
System.out.printf(" \t");
we_day++;
}
for(int m=1;m<=total_day;m++) {
if(we_day==7) {
System.out.printf("%3s\t",m);
System.out.println();
we_day=1;
}
else {
System.out.printf("%3s\t",m);
we_day++;
}
switch(we_day) {
case 1:left_day=0;break;
case 2:left_day=1;break;
case 3:left_day=2;break;
case 4:left_day=3;break;
case 5:left_day=4;break;
case 6:left_day=5;break;
case 7:left_day=6;break;
}
}
System.out.println("\n");
}
public static void main(String[] args) {
int year=0,first_day=0;
String month[]= {"January","February","March","April","May","June","July","August","September","October","November","December"};
Scanner input=new Scanner(System.in);
System.out.printf("Enter year:");
year=input.nextInt();
System.out.printf("Enter first of the year:");
first_day=input.nextInt();
month_calender_generator(year,month[0],first_day);
for(int mon=1;mon<12;mon++) {
month_calender_generator(year,month[mon],left_day);
}
}
}
PS.由于时间仓促,没有给程序加注释,敬请原谅。
另外,这个程序经过了多次修改,结构和算法上存在不足与冗余,大家有什么建议可以私信我或者在评论区留言。
最后,谢谢各位的浏览!!