使用printf时为什么会出现运行时错误?

时间:2016-04-08 18:50:07

标签: java

尝试从我的帐户类打印信息时,会出现错误。

这是我的代码:

System.out.printf("%5d $,9.2f %,5,2f%% %29s\n\n", account1.getId(), account1.getBalance(), account1.getAnnualInterestRate(), account1.getDateCreated());

错误:

Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = ','
    at java.util.Formatter.checkText(Unknown Source)
    at java.util.Formatter.parse(Unknown Source)
    at java.util.Formatter.format(Unknown Source)
    at java.io.PrintStream.format(Unknown Source)
    at java.io.PrintStream.printf(Unknown Source)
    at TestAccount.printAccount(TestAccount.java:16)
    at TestAccount.main(TestAccount.java:11)

由于

5 个答案:

答案 0 :(得分:3)

试试这个:

System.out.printf("%5d$, %9.2f, %5.2f, %29s\n\n", ...);

将打印:

  • 第一个参数
  • 填充至少5个空格的整数
  • 在基数之前填充至少9个空格的浮点数,在第二个参数之后填充2位数
  • 在基数之前填充至少5个空格的浮点数,在第三个参数之后具有2个数字
  • 为第四个参数填充至少29个字符的字符串

答案 1 :(得分:0)

您的转换字符串无效:

%,5,2f

不是有效的转化说明符。 (你的意思是%5.2f?)

答案 2 :(得分:0)

您的格式化程序中有%,5,2f%%我认为应该是%,5.2f%%

此外,您可能希望使用$%,9.2f代替$,9.2f

答案 3 :(得分:0)

您的格式字符串格式错误,因为IntelliJ显示:

enter image description here

答案 4 :(得分:0)

看起来你已经推出了"%"在9.2f之后(如9.2f%),我认为你的意图是获得账户余额,所以把"%"在9.2f之前(如%9.2f)。以下是对我有用的更正论据。

System.out.printf("%5d $,%9.2f,5,%2f %%%29s",account1.getId(),account1.getBalance(),account1.getAnnualInterestRate() ,account1.getDateCreated());