如何使用System.out.printf

我试图使用printf但我有意想不到的错误。

这段代码的错误是什么:

 System.out.printf("The date is %d/%d/%d", month,day,year); 

我想打印日期和monthdayyear都是双变量。

根据Formatter文档 , %d是整数值的转换,不适用于双精度数。 你会想要将它们转换为整数。 无论如何,为什么你将月,日和年表示为浮点数? 使用Date并使用适当的格式化器来表示日期值会更好。

如果必须对这些值使用双精度数,则需要%f而不是%d

像C的sprintf一样,可以使用静态方法String.format格式化字符串:

  // Format a string containing a date. import java.util.Calendar; import java.util.GregorianCalendar; import static java.util.Calendar.*; Calendar c = new GregorianCalendar(1995, MAY, 23); String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c); // -> s == "Duke's Birthday: May 23, 1995" 

更正了代码

  System.out.printf("The date is %f/%f/%f", month,day,year);