![](/img/trans.png)
[英]Exception in thread “main” java.util.IllegalFormatConversionException: f != java.lang.Integer
[英]IllegalFormatConversionException d != java.lang.Integer when trying to printf date?
public void display() {
System.out.printf("%-10d%-12s%-12s%10.2f%8d%12.2f%1$td.%1$tm.%1$ty %n\n",
this.getID(),
this.getFirstName(),
this.getLastName(),
this.getState(),
this.getNo(),
this.getAmt(),
this.getDate());
}
是我打印出我的一些信息的方法。 this.getDate
以 Date (java.util.Date) 类型返回日期。
我有一个例子System.out.printf("%1$td.%1$tm.%1$ty %n", date);
以dd.mm.yyyy
格式打印数据。 我试图将它放入我的代码中,但从外观上看,我犯了格式错误?
我现在一直在尝试一些打印方法,但发现它自己如何工作令人困惑,但是当我尝试将它放入更大的 printf 语句时我遇到了问题。
问题是 $-sign 之前的数字表示对象的绝对索引(从 1 开始!😉)。 您打算指向日期(索引 7),但指向第一个元素,它恰好是一个整数。 您需要使用"%-10d%-12s%-12s%10.2f%8d%12.2f%7$td.%7$tm.%7$ty %n\\n"
进行格式化。
首先,日期格式是一个复杂的问题,已经为您处理过了。 所以你试图提出你自己的格式化程序(例如 "%-10d%-12s%-12s%10.2f%8d%12.2f%td.%toString() of class Date
。如果你需要更好的格式而不是查看方法DateFormat.format(Date date) 。但是,请注意,如果您使用 Java 8 或更高版本,则不应使用java.util.Date
类。查看java.time
包。使用ZonedDateTime或其任何“兄弟”代替Date
并使用DateTimeFormatter将其格式化为字符串
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.