Java如何格式化两个数组的输出 实现等间距对齐的控制台表格
解决方案
你当前用固定空格拼接字符串的方式无法对齐,核心原因是不同商品名称的长度不一致,固定空格数没法适配长度差,直接用Java的格式化输出能力就能快速实现等间距对齐的表格,不需要手动计算每个位置要补多少空格。
实现思路
- 给每一列预设固定的显示宽度,所有行的同一列都遵守这个宽度规则,长度不足的位置自动补空格填充
- 用
System.out.printf()方法配合格式化占位符实现宽度控制,表头和内容行使用完全一致的宽度规则,避免表头和内容错位 - 常用占位符规则:
%-Nd:整数类型左对齐,占N个字符宽度%-Ns:字符串类型左对齐,占N个字符宽度- 去掉负号即为右对齐显示,可根据自己的排版需求调整
- 占位符末尾的
%n是跨平台兼容的换行符
修正后完整代码
public class jh { public static void main(String[] args) { int[] quantity = {31, 10, 30, 19, 25, 80}; String[] product = {"Milk", "Eggs", "Cereal", "Apples", "Cheese","Chicken"}; // 输出表头,和内容行使用相同的列宽配置 System.out.printf("%-6s%-12s%s%n", "Index", "Product", "Quantity"); // 循环条件用数组长度判断,避免硬编码数字后续改数组时出现越界 for (int i = 0; i < product.length; i++) { System.out.printf("%-6d%-12s%d%n", i+1, product[i], quantity[i]); } } }
调整说明
- 列宽可以根据自己的需求修改占位符里的数字,比如觉得商品列太窄,就把
%-12s改成%-15s,列间距会同步均匀变宽 - 运行后输出的每一列都会严格对齐,不会因为内容长度变化出现错位
内容的提问来源于stack exchange,提问作者Newbie
相关产品推荐
相关产品推荐

