我尝试使用printf
,但出现意外错误。
这段代码有什么问题:
System.out.printf("The date is %d/%d/%d", month,day,year);
我想打印日期和month
,day
和year
是双变量。
我尝试使用printf
,但出现意外错误。
这段代码有什么问题:
System.out.printf("The date is %d/%d/%d", month,day,year);
我想打印日期和month
,day
和year
是双变量。
根据Formatter docs,%d
是整数值的转换,它不适用于双精度数。您需要将它们转换为整数。无论如何,为什么要将月、日和年表示为浮点数?最好使用 aDate
并为日期值使用适当的格式化程序。
如果您必须对这些值使用双精度,您将需要%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);