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

被折叠的 条评论
为什么被折叠?



