java.util.IllegalFormatConversionException: d != java.lang.String

今天写了段代码,允许时候出现下面这段错误信息:

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);

你可能感兴趣的:(Java,java,占位符)