输出时格式有点不对,检查半天,不知问题所在,请帮忙。
import java.text.DateFormatSymbols;
import java.util.*;
public class Test
{
public static void main(String[] args)
{
String[] weekdayNames = new DateFormatSymbols().getWeekdays();
for(int i=1; i<=7; i++)
{
System.out.print(weekdayNames[i]);
System.out.print(" ");
}
System.out.println();
GregorianCalendar calendar = new GregorianCalendar();
int firstDayOfWeek = calendar.getFirstDayOfWeek();
calendar.set(Calendar.DAY_OF_MONTH, 1);
int weekday = calendar.get(Calendar.DAY_OF_WEEK);
int blank = 0;
while(weekday != firstDayOfWeek)
{
blank++;
calendar.add(Calendar.DAY_OF_MONTH,-1);
weekday = calendar.get(Calendar.DAY_OF_MONTH);
}
for(int i=0; i<blank; i++)
{
System.out.print(" ");
}
int month = calendar.get(Calendar.MONTH);
calendar.set(Calendar.DAY_OF_MONTH, 1);
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.printf("%7d", day);
calendar.add(Calendar.DAY_OF_MONTH, 1);
while(calendar.get(Calendar.MONTH) == month)
{
weekday = calendar.get(Calendar.DAY_OF_WEEK);
if(weekday == firstDayOfWeek)
{
System.out.println();
}
day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.printf("%7d", day);
calendar.add(Calendar.DAY_OF_MONTH, 1);
}
}
}
我的程序输出时是这样的

但应该在3日时转下一行才对,但是没有转行,不知为什么,当然肯定是weekday == firstDayOfWeek不成立所致,但是我的程序应该在3日时weekday == firstDayOfWeek成立才对,不知为什么不成立,没有转到下一行?
现有是11月份,电脑显示的排列应该是

所以我的程序不知为什么排列不正确?
------解决方案--------------------
你上面的操作改变了你的calendar的值,获取的月份已经不是11月了,重设下应该就可以。
calendar.setTime(new Date());
int month = calendar.get(Calendar.MONTH);
calendar.set(Calendar.DAY_OF_MONTH, 1);