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

如何使用Java的printf实现输出数字的个位对齐?

Java printf数字个位对齐问题修正

错误原因

你当前的格式字符串存在两个核心问题:

  1. %.30s 是将标签文本左对齐并补空格到30字符,但不同标签长度不同(比如"Sum:"仅4字符,"Average:"有8字符),补空格的数量差异导致后续数字的起始位置不统一,自然无法实现个位对齐。
  2. 浮点数使用%30f时未指定小数位数,默认输出6位小数,和你期望的两位小数格式不符。

修正方案

要实现数字个位对齐,需要拆分固定宽度的布局:

  • 标签部分用 %-N s:- 表示左对齐,N 是给标签预留的固定宽度(比如25),确保所有标签的结束位置完全一致。
  • 数字部分按类型设置统一的右对齐宽度:
    • 整数用 %M d:M 是数字部分的固定宽度,右对齐。
    • 浮点数用 %M.2f:M 是数字部分的固定宽度,.2 指定保留两位小数,右对齐。

修正后的代码示例

System.out.printf("%-25s%10d%n", "Sum:", getSum());
System.out.printf("%-25s%10.2f%n", "Average:", getAverage());
System.out.printf("%-25s%10d%n", "Difference:", getDifference());
System.out.printf("%-25s%10d%n", "Product:", getProduct());
System.out.printf("%-25s%10d%n", "Distance:", getDistance());
System.out.printf("%-25s%10d%n", "Maximum:", getMaximum());
System.out.printf("%-25s%10d%n", "Minimum:", getMinimum());

输出效果

Sum:                        45
Average:                    22.50
Difference:                  5
Product:                   500
Distance:                    5
Maximum:                    25
Minimum:                    20

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:01:01