import java.util.*;
public class CalendarTest {
public static void main(String[] args) {
GregorianCalendar d = new GregorianCalendar();
int today;
today = d.get(Calendar.DAY_OF_MONTH);
int mouth;
mouth = d.get(Calendar.MONTH);
d.set(Calendar.DAY_OF_MONTH, 1);
int weekday;
weekday = d.get(Calendar.DAY_OF_WEEK);
// System.out.println(weekday);
System.out.println("Sun Mon Tue Wed Thu Fri Sat");
for (int i = Calendar.SUNDAY; i < weekday; i++) {
System.out.printf(" ");// 这里的空行是4个,因为是3个字母+一个空格
}
do {
int day;
day = d.get(Calendar.DAY_OF_MONTH);
System.out.printf("%3d", day);// 因为sun等字母占3个宽度,故要%3d
if (day == today) {
System.out.print("*");//如果是本日,后面加*
} else {
System.out.print(" ");
}
if (weekday == Calendar.SATURDAY) {
System.out.println();
}
d.add(Calendar.DAY_OF_MONTH, 1);// 每次加一天
weekday = d.get(Calendar.DAY_OF_WEEK);
} while (mouth == d.get(Calendar.MONTH));// 加到这个月的最后一天的后一天的时候,mouth自动变成下个月,不满足循环,跳出
if (weekday != Calendar.SUNDAY)
System.out.println("");//如果不是星期天,打印一个空行
}
}
程序如上所示刚开始不太理解,后来好好把程序分析了一下,作了相应备注。
程序逻辑不复杂,但是一开始也没有想通怎么写,以后要多多动手,争取每个程序都吃透!加油!