今天写了段代码,允许时候出现下面这段错误信息:
java.util.IllegalFormatConversionException: d != java.lang.String
at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4302)
at java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2793)
代码如下:
String.format("(%d)", StringUtil.isEmpty(length)?'1':length);
解决方案:
String.format("(%d)", StringUtil.isEmpty(length)?1L:StringUtil.toLong(length));
原因:
%d 整数类型(十进制) 得传数值
最后附上常用的占位符用法:
// %s 字符串类型
String string1 = String.format("你好呀,我是%s,请问你是%s吗?", "张三", "李四");
System.out.println("string1 = " + string1);
// %c 字符类型
String string2 = String.format("字母%c", 'a');
System.out.println("string2 = " + string2);
// %b 布尔类型
String string3 = String.format("布尔型%b", false);
System.out.println("string3 = " + string3);
// %d 整数类型(十进制)
String string4 = String.format("数字%d", 3);
System.out.println("string4 = " + string4);
// %f 浮点类型
String string5 = String.format("数字%f", 3.0);
System.out.println("string5 = " + string5);