当前位置: 代码迷 >> J2EE >> java 核心技术里面的有关问题 好心人解答
  详细解决方案

java 核心技术里面的有关问题 好心人解答

热度:105   发布时间:2016-04-22 03:03:19.0
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版本的问题
  相关解决方案