You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

System.out.printf报错咨询:IllegalFormatConversionException问题排查

解决Java printf格式化错误的问题

我一眼就看出问题出在哪了——你遇到的IllegalFormatConversionException是因为格式占位符和传入的参数类型不匹配,还有一处printf的写法也错了,咱们一步步来修正:

问题1:表头的格式占位符与参数类型不匹配

你这段代码里的第一行printf:

System.out.printf("\n%-10s%4d%10.2f\n", "Person#", "Age", "TotalBill");

这里的%4d是整数类型的格式占位符,但你传入的对应参数是字符串"Age",类型完全不匹配,这就是抛出d != java.lang.String异常的直接原因。

修正方案:

把%4d改成字符串占位符%4s,因为表头文字都是字符串:

System.out.printf("\n%-10s%4s%10.2f\n", "Person#", "Age", "TotalBill");

问题2:printf的参数传递方式错误

你这段代码里的第二行printf:

System.out.printf("Grand total = $ %.2f\n" + grandTotal);

这种写法完全搞错了printf的用法——printf的第一个参数是格式字符串,后续参数才是要填充到占位符里的值,你直接用+把变量拼在格式字符串后面,相当于把grandTotal的值当成了格式字符串的一部分,而不是填充%.2f的参数。

修正方案:

把grandTotal作为printf的第二个参数传递:

System.out.printf("Grand total = $ %.2f\n", grandTotal);

改完这两处之后,格式占位符和参数类型就完全对应了,控制台的格式化错误会消失,计算结果也能正常显示啦。

内容的提问来源于stack exchange,提问作者Ivan Gonzalez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:32:36