源程序:import java.util.*;
public class CalendarTest {
public static void main(String[] args)
{
GregorianCalendar d=new GregorianCalendar();
int today=d.get(Calendar.DAY_OF_MONTH);
    int month=d.get(Calendar.MONTH);
    d.set(Calendar.DAY_OF_MONTH,1);
    int weekday=d.get(Calendar.DAY_OF_WEEK);
    System.out.println("SUN MON TUE WED THU FRI SAT");
    for(int i=Calendar.SUNDAY;i<weekday;i++)
     System.out.print("    ");
    do
    {
     int day=d.get(Calendar.DAY_OF_MONTH);
     System.out.printf("%3d",day);
     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(d.get(Calendar.MONTH)==month);
    if(weekday!=Calendar.SUNDAY)
     System.out.println();
    
    
}}
最后一步,就是if(weekday!=Calendar.SUNDAY)
               System.out.println();
这一步我不明白是干什么用的,我把它删了照样可以得出预定的结果。高手可以告诉我一下吗?谢了。

解决方案 »

  1.   

    if(weekday!=Calendar.SUNDAY)
    System.out.println();这一句,如果下面没有什么输出内容的话,是可以去掉的。如果下面还有输出内容,就不能去掉,否则下面输出的内容会接在日历的后面。那为什么要不等于星期天的时候换行呢?因为前面在星期六的时候已经换行了,其他的星期没有换行,那星期六后有加一天的语句,那就是星期天,也就是说不是星期天的时候换行(加一天之前是星期天至星期五)。不知道你明白了吗?
      

  2.   

    我还是不明白为什么在不等于星期日的时候换行。要想换行直接写上System.out.println();不就行了吗。
      

  3.   

    但是,当weekday正好是星期天的时候,这在前面已经换行了,所以不加条件判断的直接换行,还是不对,
    结贴给分吧。