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

java 核心技术里面的问题 好心人解答
import java.util.*;

public class Simple
{

public static void main(String[] args)
{

System.out.printf("%tc", new Date());

}

}



错误提示
xception in thread "main" java.lang.Error: Unresolved compilation problem: 
The method printf(String, Object[]) in the type PrintStream is not applicable for the arguments (String, Date)

at Simple.main(Simple.java:15)

为什么会出现错误呢?我上网查了 我又加上这个包java.util.*;这个包,
后来我发现了用 printf输出有发现一个问题 System.out.printf(String format,object[] agrs);
这样的类型,

后来发现这样也是错的, System.out.printf("hello");
System.out.printf("After year %d,your balance is %,.2f%n",year,balance);  


我发现问题出现在printf这个方法  
麻烦帮我解答一下
  






------解决方案--------------------
试试下面的代码:

Java code


Date date = new Date();

              long dataL = date.getTime();

              // 格式化年月日

              // %t之后用y表示输出日期的年份(2位数的年,如99)

              // %t之后用m表示输出日期的月份,%t之后用d表示输出日期的日号

              System.out.printf("%1$ty-%1$tm-%1$td; %2$ty-%2$tm-%2$td%n", date, dataL);

              // %t之后用Y表示输出日期的年份(4位数的年),

              // %t之后用B表示输出日期的月份的完整名, %t之后用b表示输出日期的月份的简称

              System.out.printf("%1$tY-%1$tB-%1$td; %2$tY-%2$tb-%2$td%n", date, dataL);

             

              // 以下是常见的日期组合

              // %t之后用D表示以 "%tm/%td/%ty"格式化日期

              System.out.printf("%1$tD%n", date);

              //%t之后用F表示以"%tY-%tm-%td"格式化日期

              System.out.printf("%1$tF%n", date);

             

              /*** 输出时间类型***/

              // 输出时分秒

              // %t之后用H表示输出时间的时(24进制),%t之后用I表示输出时间的时(12进制),

              // %t之后用M表示输出时间的分,%t之后用S表示输出时间的秒

              System.out.printf("%1$tH:%1$tM:%1$tS; %2$tI:%2$tM:%2$tS%n", date, dataL);

              // %t之后用L表示输出时间的秒中的毫秒

              System.out.printf("%1$tH:%1$tM:%1$tS %1$tL%n", date);

              // %t之后p表示输出时间的上午或下午信息

              System.out.printf("%1$tH:%1$tM:%1$tS %1$tL %1$tp%n", date);

             

              // 以下是常见的时间组合

              // %t之后用R表示以"%tH:%tM"格式化时间

              System.out.printf("%1$tR%n", date);

              // %t之后用T表示以"%tH:%tM:%tS"格式化时间

              System.out.printf("%1$tT%n", date);

              // %t之后用r表示以"%tI:%tM:%tS %Tp"格式化时间

              System.out.printf("%1$tr%n", date);

             

              /*** 输出星期***/

              // %t之后用A表示得到星期几的全称

              System.out.printf("%1$tF %1$tA%n", date);

              // %t之后用a表示得到星期几的简称

              System.out.printf("%1$tF %1$ta%n", date);

             

              // 输出时间日期的完整信息

              System.out.printf("%1$tc%n", date);

------解决方案--------------------
API中是这样要求的public PrintStream printf(String format,
Object... args)
也就是说你传入的new Date()这个参数是不符合要求的,这里需要的是一个对象数组

比如这样传:
Java code
        Integer[] b = new Integer[1];
        b[0]=new Integer(2);

        System.out.printf("b的值为%d",b);

------解决方案--------------------
我运行没问题啊,输出结果:

星期四 七月 28 15:59:19 CST 2011

你用的JDK不会是1.5以前的吧?
------解决方案--------------------
The method printf(String, Object[]) in the type PrintStream is not applicable for the arguments (String, Date)

说明你的jdk 不支持这种写法 估计是jdk版本的问题