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

博客详细解释了一起在Java编程中遇到的`java.util.IllegalFormatConversionException`错误,原因是尝试将非字符串类型转换为%d格式。通过提供修复代码和常用占位符的示例,展示了如何正确使用`String.format()`方法。修复关键在于确保%d对应的参数是整数类型。同时,文章列举了不同类型的占位符,包括%s(字符串)、%c(字符)、%b(布尔)、%d(整数)和%f(浮点数),帮助读者更好地理解和应用格式化字符串。

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

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值