参照资料写了个打印日历的代码,可是“1号” 的位置总是不正确,请高手指点
代码如下:
import java.util.*;
public class CalendarTest {
public static void main(String[] args) {
//construct d as current date
GregorianCalendar d=new GregorianCalendar();
int today =d.get(Calendar.DAY_OF_MONTH);
int month = d.get(Calendar.MONTH);
//set d to start date of the month
d.set(Calendar.DAY_OF_MONTH, 1);
int weekday = d.get(Calendar.DAY_OF_WEEK);
//print heading
//星期日 星期一 星期二 星期三 星期四 星期五 星期六
System.out.println("Sun Mon Tue Wed Thu Fri Sat");
//indent first line of calendar
for(int i =Calendar.SUNDAY;i<weekday;i++){
System.out.print("");
do{
//print day
int day =d.get(Calendar.DAY_OF_MONTH);
System.out.printf("%3d",day);
//mark current day with *
if(day==today)
System.out.print("*");
else
System.out.print("");
//start anew line after every Saturday
if(weekday==Calendar.SATURDAY)
System.out.println();
//advance d to the next day
d.add(Calendar.DAY_OF_MONTH,1);
weekday = d.get(Calendar.DAY_OF_WEEK);
}
while(d.get(Calendar.MONTH)==month);
//the loop exits when d is day 1 of the next month
//print final end of line if necessary
if(weekday != Calendar.SUNDAY)
System.out.println("");
}
}
}
执行结果如下:
Sun Mon Tue Wed Thu Fri Sat
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17* 18 19 20 21 22
23 24 25 26 27 28 29
30 31
1
2
3
4
5