java中的Amerpsand格式标志
我有用于格式化字符串的现有java代码。以下格式的代码失败-java.util.FormatFlagsConversionMismatchException:…基于其他SO问题,我认为它与所使用的java版本更相关 问题java中的Amerpsand格式标志,java,Java,我有用于格式化字符串的现有java代码。以下格式的代码失败-java.util.FormatFlagsConversionMismatchException:…基于其他SO问题,我认为它与所使用的java版本更相关 问题 “%1$#”格式有什么作用..我在谷歌搜索时,基本上找不到“$”和“#”格式规则 如何解决这个问题 Java代码 String test = String.format("%1$#" + 2 + "s", 01); 从以下文件: 常规、字符和数字类型的格式说明符具有以下语法:
String test = String.format("%1$#" + 2 + "s", 01);
从以下文件:
常规、字符和数字类型的格式说明符具有以下语法:
%[argument_index$][flags][width][.precision]conversion
因此,%1$#2s
表示参数索引为1,标志值为
(“结果应使用依赖于转换的替代形式”),宽度为2,转换为s
(字符串)
对于%s
转换,通过将其传递到Formattable
,使用替代形式:
如果参数为null,则结果为“null”
。如果参数实现了Formattable
,则调用其formatTo
方法。否则,将通过调用参数的toString()方法获得结果
如果给定了“#”标志且参数不是Formattable
,则将抛出FormatFlagsConversionMismatchException
我怀疑您在这种情况下并不真正想要
#
。您可以阅读有关格式的内容。代码中的错误是,
在您的情况下是无效的FormatFlag(#意味着结果应该使用依赖转换的替代形式)。您可以使用,例如,s或d
这样打印
System.out.println(String.format("%1$d" + 2 + "s", 01));
java.util.Formatter
javadoc.“符号”从何而来?!!