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

关于printf()函数的一点问题,急
GregorianCalendar d = new GregorianCalendar();
int day = d.get(Calendar.DAY_OF_MONTH);
System.out.printf("%3d",day);
我在2台电脑上编译,结果1太能运行,1台提示printf("%3d",day)方法用错,其中指出printf("%3d",day)中day应该是个数组对象。因此我去查了API文档,文档中找到:
public PrintStream printf(String format,
  Object... args)使用指定格式字符串和参数将格式化的字符串写入此输出流的便捷方法。 
调用此方法的 out.printf(format, args) 形式,行为与以下调用完全相同: 

  out.format(format, args) 
参数:
format - 在格式字符串的语法中描述的格式字符串
args - 格式字符串中的格式说明符引用的参数。如果参数多于格式说明符,则忽略额外的参数。参数的数量是可变的,并且可以为零。参数的最大数量受到《Java Virtual Machine Specification》定义的 Java 数组的最大维数的限制。针对 null 参数的行为依赖于 conversion。 
返回:
此输出流 
抛出: 
IllegalFormatException - 如果格式字符串包含非法语法、与给定参数不兼容的格式说明符、对给定格式字符串而言不够充足的参数或其他非法条件。有关所有可能的格式错误的规范,请参阅 formatter 类规范的详细信息部分。 
NullPointerException - 如果 format 为 null
从以下版本开始: 
1.5 
我想问下各位,这是怎么回事,我想printf()这个方法不会现在弄的这么复杂的吧,一直想不明白,我家的电脑也是1。6版本,学校的也是1。6版本,为什么2太电脑会出现不同的情况呢。

------解决方案--------------------
System.out.printf("%3d",day); java可以这样吗?

关注!
------解决方案--------------------
printf("%3d",day); 
这个方法1.5之后才有的