Java 为什么我会有例外?
请帮忙。扫描仪的提示显示到控制台后,我出现此错误:Java 为什么我会有例外?,java,exception,runtime-error,printf,decimalformat,Java,Exception,Runtime Error,Printf,Decimalformat,请帮忙。扫描仪的提示显示到控制台后,我出现此错误: Exception in thread "main" java.util.IllegalFormatPrecisionException: 2 at java.util.Formatter$FormatSpecifier.checkInteger(Unknown Source) at java.util.Formatter$FormatSpecifier.<init>(Unknown Source) at java.util.For
Exception in thread "main" java.util.IllegalFormatPrecisionException: 2
at java.util.Formatter$FormatSpecifier.checkInteger(Unknown Source)
at java.util.Formatter$FormatSpecifier.<init>(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 Project6.main(Project6.java:56)
答:因为格式说明符与
printf
方法中使用的输入参数不匹配
使用%f
而不是%d
作为双值的格式说明符
System.out.printf("Diamond Cost: $%,.2f \n", diamondCost);
^
此外,%
需要额外的%
来转义该字符
System.out.printf("State Tax @ 10%%: $%,.2f \n", stateTax);
System.out.printf("Number Ordered: $%,.2d \n", numOrdered);
^
最后,删除不必要的点字符
System.out.printf("State Tax @ 10%%: $%,.2f \n", stateTax);
System.out.printf("Number Ordered: $%,.2d \n", numOrdered);
^
阅读:stacktrace会告诉您发生错误的确切行(56
),任何好的IDE都会允许您将行号添加到编辑器中。这将允许您只发布一行代码,而不是所有这些。哈哈。可以谢谢你的提示。我不知道。线程“main”中的异常java.util.UnknownFormatConversionException:Conversion=':'在java.util.Formatter.checkText(未知源)在java.util.Formatter.parse(未知源)在java.util.Formatter.format(未知源)在java.io.PrintStream.format(未知源)在java.io.PrintStream.printf(未知源)在java.io.PrintStream在Project6.main(Project6.java:58)+1(特别是用于用另一个转义%
)。已经想发布答案,但你是第一个)哦,但是还有一件事,这行中还有一个过多的点(
):System.out.printf(“编号顺序:$%,.2d\n”,numOrdered)
它应该是%2d
,即没有点(
),否则将抛出exceptionOkay。我加了额外的%并去掉了逗号。它现在运行。非常感谢。还有,有没有办法中断printf以使消息对话框正常工作?它不会突然出现,所以,只要%d。谢谢