为什么在使用printf时会出现运行时错误?
问题描述:
当试图从我的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)
感谢
答
试试这个:
System.out.printf("%5d$, %9.2f, %5.2f, %29s\n\n", ...);
将打印的内容:
- 一个整数填充到至少5个空格为第一个参数
- 浮子填充基数之前至少9米的空间,并且具有2位后的第二个参数
- 浮子基数之前填充至少5个空格和有2位数字之后,用于第三个参数
- 的字符串填充到至少29个字符为所述参数
答
你有一个无效的转换字符串:
%,5,2f
不是有效转换说明符。 (?你的意思是%5.2f
)
+0
就是这样。这是为了一个大学的任务,我给了格式字符串。我想我在复制/粘贴时没有看到。谢谢 –
答
您的格式化%,5,2f%%
,我认为应该是%,5.2f%%
此外,您可能需要使用$%,9.2f
代替$,9.2f
答
看起来你已经在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 ());
它似乎在抱怨逗号。 – forgivenson
也许试试“%5d $,9.2f%,5.2f %%%29s \ n \ n”? – totoro
你想用'%,5,2f'实现什么? – Pshemo