显示日历

来源:互联网 发布:阿铭linux 视频 云盘 编辑:程序博客网 时间:2024/05/17 08:37

编写程序,提示用户输入年份和该年第一天的星期,在控制台上显示该年的日历表。例如,用户输入 2010 年,第一天是星期 5,则显示如下的日历:




import java.util.Scanner;


public class Test2 {

public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner input = new Scanner(System.in);
System.out.print("请输入年份:");
int year = input.nextInt();
System.out.print("该年第一天是星期几:");
int startDay = input.nextInt();
printMonth(year,startDay);
}


public static void printMonth(int year,int startDay){
for(int i=1;i<=12;i++){
System.out.println("          "+getMonthName(i)+"  "+year);
System.out.println("----------------------------");
System.out.println(" Sun Mon Tue Wed Thu Fri Sat");

for(int j=0;j<startDay;j++)
System.out.print("    ");

for(int j=1;j<=getMonthDay(i,year);j++){
System.out.printf("%4d",j);
startDay= (startDay+1)%7;
if(startDay==0)
System.out.println();
}
System.out.println();
System.out.println();

}

}


public static String getMonthName(int i){
String monthName = " ";
switch (i){
case 1: monthName = "January";break;
case 2: monthName = "February";break;
case 3: monthName = "March";break;
case 4: monthName = "April";break;
case 5: monthName = "May";break;
case 6: monthName = "June";break;
case 7: monthName = "July";break;
case 8: monthName = "August";break;
case 9: monthName = "September";break;
case 10: monthName = "October";break;
case 11: monthName = "November";break;
case 12: monthName = "December";break;
}

return monthName;
}

public static int getMonthDay(int i,int year){
switch(i){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 4:
case 6:
case 9:
case 11:
return 30;
case 2:
if(isLeapYear(year))
return 29;
else
return 28;

default:
return 0;
}

}

public static boolean isLeapYear(int year){
return  (year%400==0)||(year%4==0&&year%100!=0);
}
}