2016-04-08 171 views
0

当试图从我的Account类打印信息时,它出现错误。为什么在使用printf时会出现运行时错误?

这里是我的代码:

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) 

感谢

+0

它似乎在抱怨逗号。 – forgivenson

+0

也许试试“%5d $,9.2f%,5.2f %%%29s \ n \ n”? – totoro

+0

你想用'%,5,2f'实现什么? – Pshemo

回答

3

试试这个:

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

将打印的内容:

  • 一个整数填充到至少5个空格为第一个参数
  • 浮子填充基数之前至少9米的空间,并且具有2位后的第二个参数
  • 浮子基数之前填充至少5个空格和有2位数字之后,用于第三个参数
  • 的字符串填充到至少29个字符为所述参数
0

你有一个无效的转换字符串:

%,5,2f 

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

+0

就是这样。这是为了一个大学的任务,我给了格式字符串。我想我在复制/粘贴时没有看到。谢谢 –

0

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

此外,您可能需要使用$%,9.2f代替$,9.2f

0

你的格式字符串畸形为的IntelliJ示出:

enter image description here

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 ());

相关问题