使用星号时出现Java printf错误

时间:2014-10-03 21:53:46

标签: java syntax printf

以下是给我错误的printf语句:

System.out.printf("%-*s%*s", dateTimeWidth, dateTime, locationWidth, location);

我希望dateTime打印左对齐,宽度为dateTimeWidth,要打印的位置与width locationWidth右对齐。 locationWidth和dateTimeWidth都以整数形式传入。

这是我得到的错误:

Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = '-'
    at java.util.Formatter.checkText(Formatter.java:2503)
    at java.util.Formatter.parse(Formatter.java:2485)
    at java.util.Formatter.format(Formatter.java:2414)
    at java.io.PrintStream.format(PrintStream.java:920)
    at java.io.PrintStream.printf(PrintStream.java:821)
    at TicketMaker.drawTicket(TicketMaker.java:43)
    at TicketMaker.main(TicketMaker.java:12)

我认为我的语法有问题,但我不确定我做错了什么。

有星号的printf信息 here

1 个答案:

答案 0 :(得分:2)

在使用printf之前声明一个额外的变量:

String format = "%-" + dateTimeWidth + "s%" + locationWidth + "s";
System.out.printf(format, dateTime, location);