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。谢谢