请帮我看一个这个日历输出程序,输出有点问题,我不知怎么改

u010179812 2013-11-17 11:02:17
输出时格式有点不对,检查半天,不知问题所在,请帮忙。

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月份,电脑显示的排列应该是

所以我的程序不知为什么排列不正确?
...全文
148 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010179812 2013-11-18
  • 打赏
  • 举报
回复
果真是月份有误。我改了一下,可以输出正确形式了。

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();
int month = calendar.get(Calendar.MONTH);

calendar.set(Calendar.DAY_OF_MONTH, 1);
int weekday = calendar.get(Calendar.DAY_OF_WEEK);

int blank = 0;
while(weekday != 1)
{
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(" ");
}

calendar.set(Calendar.MONTH, 10); //此处是与第一次贴出的程序不同之处。
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("%6d", day);
calendar.add(Calendar.DAY_OF_MONTH, 1);
}
}
}


正确的输出形式为




u010179812 2013-11-17
  • 打赏
  • 举报
回复
为什么图片没有显示,再发一次,

这个是我自己的输出。
zhuweisyyc 2013-11-17
  • 打赏
  • 举报
回复
引用 1 楼 u010179812 的回复:
为什么图片没有显示,再发一次, 这个是我自己的输出。
你上面的操作改变了你的calendar的值,获取的月份已经不是11月了,重设下应该就可以。 calendar.setTime(new Date()); int month = calendar.get(Calendar.MONTH); calendar.set(Calendar.DAY_OF_MONTH, 1);
u010179812 2013-11-17
  • 打赏
  • 举报
回复
没有理我?这是我第一次碰到这么久没有回复我。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧