java如何列对齐
在Java中实现列对齐的方法
使用System.out.printf格式化输出
printf方法可以通过格式化字符串控制列宽和对齐方式。%Ns表示字符串占N个字符宽度,%-Ns表示左对齐,%Ns表示右对齐。
System.out.printf("%-10s %-10s %-10s\n", "Name", "Age", "City");
System.out.printf("%-10s %-10d %-10s\n", "Alice", 25, "New York");
System.out.printf("%-10s %-10d %-10s\n", "Bob", 30, "London");
使用String.format预先格式化
String.format与printf使用相同的格式化语法,但返回格式化后的字符串而非直接输出。
String header = String.format("%-10s %-10s %-10s", "Name", "Age", "City");
String row1 = String.format("%-10s %-10d %-10s", "Alice", 25, "New York");
System.out.println(header);
System.out.println(row1);
使用String的pad方法手动对齐
通过计算字符串长度并用空格填充实现对齐,适用于需要动态调整列宽的场景。
String name = "Alice";
int age = 25;
String city = "New York";
String formattedName = String.format("%-" + 10 + "s", name);
String formattedAge = String.format("%-" + 10 + "d", age);
String formattedCity = String.format("%-" + 10 + "s", city);
System.out.println(formattedName + formattedAge + formattedCity);
使用第三方库(如Apache Commons Lang)
StringUtils类提供方便的字符串填充方法,简化手动对齐操作。
import org.apache.commons.lang3.StringUtils;
String name = "Alice";
String age = "25";
String city = "New York";
String formattedName = StringUtils.rightPad(name, 10);
String formattedAge = StringUtils.rightPad(age, 10);
String formattedCity = StringUtils.rightPad(city, 10);
System.out.println(formattedName + formattedAge + formattedCity);
表格输出建议
对于复杂表格,建议使用专门的库如ASCIITable或Java Pretty Printer,它们支持自动调整列宽、边框绘制等功能。

// 示例使用ASCIITable(需引入依赖)
String[] headers = {"Name", "Age", "City"};
String[][] data = {{"Alice", "25", "New York"}, {"Bob", "30", "London"}};
ASCIITable.getInstance().printTable(headers, data);
注意事项
- 固定列宽时需确保内容不超过指定宽度,否则会破坏对齐。
- 中文字符占用宽度与英文字符不同,可能需要额外处理。
- 对于数值类型,建议统一指定小数位数(如
%.2f)以避免格式不一致。






