日期:2014-05-20  浏览次数:20628 次

JAVA初学,几个问题
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();

}
}
书上的一段代码....输出当月的日历形式,想问下System.out.printf("%3d",day);这条语句为什么在Eclipse3.2会报错??
~~~类型 PrintStream 中的方法 printf(String, Object[])对于参数(String, int)不适用~~~
而在BLUEJ上却能运行??

还有就是int weekday=d.get(Calendar.DAY_OF_WEEK);输出weekday输出为2(今天星期5),而在输出日历表的时候却是正确的显示(在星期5标了*)...

------解决方案--------------------
你看看是不是你哪来弄错了,我在Eclipse 3.2中运行了你的代码,没有报错的,而且出了结果,没有问题的!
------解决方案--------------------
LZ的eclipse的jdk不是1.5版本的,自己设置一下
窗口/设定/java/已安装的JRE 在这里追加1.5的JRE
窗口/设定/java/编译器 在这里选择版本


------解决方案--------------------
Java code
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  31

------解决方案--------------------
F:\sun\javaword\lesson1>java Example15
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 31

没有任何问题
------解决方案--------------------
以上是我在jdk1.6中的输出结果
------解决方案--------------------
在我这里完全正常啊
------解决方案--------------------
楼主是在看core java么?