分析
第一 变量定义:
首先,我们需要一个用来存储对应月份天数的变量 monthDay ,接着我们需要一个用来存储星期数的变量 dayTheWeek,再接着我需要一个用来存放用户输入月份的变量 month , 最后我们需要一个用来存储用户输入年份的变量 year,和一个空字符串 str ;通过这些变量,我们很基本的认识到,我们现实确认该月的天数,然后通过格式化 DateFormat 将该年份月份变成一个时间,最后我们再通过Calendar中的DAY_OF_WEEK 常量将其获取下来。
第二 代码编写
public static void permanentCalendar() throws ParseException {
int monthDay = 0;
int dayTheWeek = 0;
int month = 0;
int year = 0;
String str = "";
System.out.println("请输入一个年份:");
Scanner scanner = new Scanner(System.in);
year = scanner.nextInt();
System.out.println("请输入一个月份:");
month = scanner.nextInt();
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
monthDay = 31;
break;
case 4:
case 6:
case 9:
case 11:
monthDay = 30;
break;
default:
if ((year % 4 ==0 && year % 100 != 0) || year % 400 == 0) {
monthDay = 29;
}else {
monthDay = 28;
}
break;
}
str = year+"年"+month+"月";
Date date = new Date();
DateFormat dateFormat = new SimpleDateFormat("yyyy年M月");
date = dateFormat.parse(str);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
//划重点,这是这方法的关键所在
dayTheWeek = calendar.get(calendar.DAY_OF_WEEK);
for (int i = 0; i < 7; i++) {
if (i == 0) {
System.out.print("星期7\t");
}else {
System.out.print("星期"+i+"\t");
}
}
System.out.println();
for (int i = 1; i < 42; i++) {
if (i < dayTheWeek) {
System.out.print("\t");
}else {
if (i < (dayTheWeek+monthDay)) {
System.out.print((i-dayTheWeek+1)+"\t");
}
}
if (i % 7 == 0) {
System.out.println();
}
}
}
这个方法时的关键点是这句 dayTheWeek = calendar.get(calendar.DAY_OF_WEEK); 我们不能直接通过calendar.DAY_OF_WEEK获取星期数,必须通过calendar.get()方法将其转化一下,才能获取到正确的星期数。
最后附上结果图