各位大虾给看看这个程序:
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);
   
[b]    System.out.printf("%3d",day);[/b] 
   
   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(); 
}}
有颜色那一行总是报错,大家帮忙看看是什么错阿

解决方案 »

  1.   

    类型 PrintStream 中的方法 printf(String, Object[])对于自变量(String, int)不适用 CalendarTest.java
    总是报这个错,看不懂,请指教
      

  2.   

    import java.util.Calendar;
    import java.util.GregorianCalendar;public class Test {
      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();
      }
    }
    运行正常
    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   
      

  3.   

    怪了嘿,怎么在我这就报错呢。。
    难道eclipse耍我??
      

  4.   

    不知道你是什么JRE版本(我是1.6)....反正我是运行正常...所以我来接分了...哈哈运行结果: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 
      

  5.   

    for (int i = Calendar.SUNDAY; i < weekday; i++)
          System.out.print("      ");
    你少写了一半的空格,因为SUN也占三个哦!
      

  6.   

    呵呵,楼主的这个错说了,“类型PrintStream   中的方法   printf(String,   Object[])对于自变量(String,   int)不适用 CalendarTest.java”   稍稍观察,发现参数类型不匹配,原方法是需要Object对象(这在JDK文档中也可以查到),而楼主用了int,但int是基本数据类型,应将其转为对象,
      Integer objDay = new Integer(day);
      然后把objDay传入,即
      System.out.printf("%3d",objDay);
    但我的JRE是1.5的,没有抱错,以上仅供参考,望对你有助~~
      

  7.   

    我运行了一下和LZ出现一样的毛病我用的也是eclipse.
    10楼的说转Integer可还是报错类型 PrintStream 中的方法 printf(String, Object[])对于参数(String, Integer)不适用
      

  8.   

    printf(String,   Object[])对于参数(String,   Integer)不适用
    错在少了[],把Integer转成Integer数组就可以了    Integer[]   objDay   =   new   Integer(day);
        然后把objDay传入,即
        System.out.printf("%3d",objDay); 
      

  9.   

    用12楼的方法倒是能运行起来,只可惜日期全变为NULL了