如何使用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
相关产品推荐
相关产品推荐

