程序是这样的:
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.println(" ");
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();
}
}我在Eclipse上试了下 发现结果是这样的:
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 但是书上的结果,意思是应该就像通常的日历一样,按照星期下面排的日期 为什么这个结果是乱的,我应该没打错程序,都检查好几遍了,现在对JAVA还是一知半解,所以看了几遍程序还有点不明白,希望大家给看看程序,谢谢

解决方案 »

  1.   

    if (day == today)
    System.out.print("*");
    else
    System.out.println(" ");==>>if (day == today)
    System.out.print("*");
    else
    System.out.print(" ");
      

  2.   

    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);
        if(day<10)
        System.out.print(" ");
        
        
        System.out.print(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();
        }
    }这个例子写的不对,试试这个
      

  3.   


    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"); int day = d.get(Calendar.DAY_OF_MONTH);
    switch (weekday) {
    case Calendar.MONDAY:
    System.out.printf("%7d", day);
    break;
    case Calendar.TUESDAY:
    System.out.printf("%11d", day);
    break;
    case Calendar.WEDNESDAY:
    System.out.printf("%15d", day);
    break;
    case Calendar.THURSDAY:
    System.out.printf("%19d", day);
    break;
    case Calendar.FRIDAY:
    System.out.printf("%23d", day);
    break;
    case Calendar.SATURDAY:
    System.out.printf("%27d", day);
    break;
    case Calendar.SUNDAY:
    System.out.printf("%31d", day);
    break;
    }
    if (day == today)
    System.out.print("*");
    else
    System.out.print(" ");
    d.add(Calendar.DAY_OF_MONTH, 1);
    weekday = d.get(Calendar.DAY_OF_WEEK); while (d.get(Calendar.MONTH) == month) {
    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);
    }
    }
    }月份第一个日期要判断是一周中的第几天 
      

  4.   


    // System.out.print("    ");    四个空格是什么意思?是不是有点固定了?