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

如何使用Java String.format将数组元素对齐为规整列

问题原因

  • 字段预留宽度不足:姓氏仅预留5位、职位仅预留15位,长内容会溢出挤占后续字段位置,是末尾数字不对齐的核心原因
  • 数字字段偏移量设置错误:你给年龄设置了20位的左侧填充、成绩设置了10位左侧填充,没有和前面文本字段的总宽度匹配,导致对齐混乱
  • 代码逻辑冗余且存在错误:无需单独格式化每个字段再拼接,String.format支持一次性格式化整行;用==比较字符串对象属于语法错误,且循环打印后判断换行的逻辑完全多余

修正方案

直接用单条String.format语句完成整行格式化,根据你给出的示例列宽设置合适的字段占位宽度即可,修正后的代码如下:

// 如果你的数组下标0是表头元素,可保留i=1的起始值,否则建议改成i=0避免漏掉第一条数据
for(int i = 1; i < strLastName.length; i++) {
    // 占位符说明:数字默认右对齐,加-表示左对齐,数值表示占位总宽度
    String line = String.format("%-4d%-12s%-12s%-30s%4d%4d", 
            intId[i], 
            strFirstName[i], 
            strLastName[i], 
            strRole[i], 
            intAge[i], 
            intGrade[i]);
    System.out.println(line);
}

占位符参数说明

  • %-4d:id字段左对齐,占4位宽度,适配最大2位的id值+多余留白
  • %-12s:名/姓字段左对齐,各占12位宽度,适配常见英文姓名长度
  • %-30s:职位字段左对齐,占30位宽度,覆盖你示例中最长的职位文本
  • %4d:年龄、成绩字段右对齐,各占4位宽度,和你示例的数字间距匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:06:03