Java-为什么会收到UnknownFormatConversionException?

时间:2018-11-28 16:24:47

标签: java exception printf double

每当我尝试执行此行时:

System.out.printf("%14s %-*.2f\n", "Minimum Range:", minRange); // minRange is a double

我收到此错误:

  

java.util.UnknownFormatConversionException:转换='-'

我的陈述似乎找不到任何错误。除非我弄错了,否则%-*.2f应该可以正常工作。

为什么这是错误的?

如何指定一个无限制的字段,该字段允许两位小数?

2 个答案:

答案 0 :(得分:1)

根据您的评论,您要打印不限长度的数字,并且只允许小数点后两位。

为此,您无需使用-*。

您的答案将是:

Item_ID

使用-(减号)标志表示您想证明自己的价值。当使用该标志时,应指定要用来对齐文本的块的宽度。 您要指定的宽度*无效。

答案 1 :(得分:0)

我不知道为什么您认为“-*”是有效标志,但是正确的格式语法应该是(请注意平台特定换行符的%n):

System.out.printf("%14s %0.2f%n", "Minimum Range:", minRange); // minRange is a double

等于(因为字符串变量恰好有14个字符):

System.out.printf("%s %0.2f%n", "Minimum Range:", minRange);

再次等于(并且更易于阅读):

System.out.printf("Minimum Range: %.2f%n", minRange);

请参见https://docs.oracle.com/javase/10/docs/api/java/util/Formatter.html