对齐表格
设置数据列的格式
对齐表格 是 CoddyKit 上的免费 Java Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Java Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Java Academy 课程共包含 4 节课。
为什么需要对齐?
打印多行数据时,参差不齐的列很难阅读。对齐后的列可以让数字和标签整齐地上下排列。
printf 的宽度和标志可以让您直接在控制台中构建整洁的表格。
默认右对齐
像 %10s 这样的宽度会预留 10 个字符,并在左侧填充,因此文本会右对齐。
数字的行为也相同,这就是数字列会在右边缘对齐的原因。
public class Main {
public static void main(String[] args) {
System.out.printf("[%10s]\n", "hi");
}
}使用减号左对齐
添加 - 标志即可在字段内左对齐。%-10s 会将文本放在左侧,并在右侧填充。
左对齐非常适合标签和姓名。
public class Main {
public static void main(String[] args) {
System.out.printf("[%-10s]\n", "hi");
}
}两列
将左对齐的标签与右对齐的数字组合起来,就能构建一行内容。%-10s%5d 会提供宽度为 10 的姓名字段和宽度为 5 的数字字段。
对每一行重复使用相同的格式,列就会保持对齐。
public class Main {
public static void main(String[] args) {
System.out.printf("%-10s%5d\n", "Apples", 3);
System.out.printf("%-10s%5d\n", "Pears", 12);
}
}简单表格
对标题和每一行数据使用相同的格式字符串,可以让所有内容保持对齐。
这里的三行共用一种模式,因此各列始终整齐。
public class Main {
public static void main(String[] args) {
String fmt = "%-8s%6d\n";
System.out.printf(fmt, "Name", 0);
System.out.printf(fmt, "Ann", 90);
System.out.printf(fmt, "Bob", 7);
}
}对齐小数
对于金额或测量值,可以组合宽度和精度:%8.2f 会将一个保留两位小数的数字右对齐在宽度为 8 个字符的字段中。
各行的小数点会在垂直方向上对齐。
public class Main {
public static void main(String[] args) {
System.out.printf("%8.2f\n", 5.5);
System.out.printf("%8.2f\n", 123.4);
}
}带数字的标题
在同一行中混合字符串列和数字列。左侧标签与右对齐的价格放在一起读起来很自然。
这种模式是大多数控制台报告的核心。
public class Main {
public static void main(String[] args) {
System.out.printf("%-10s%8.2f\n", "Coffee", 3.5);
System.out.printf("%-10s%8.2f\n", "Cake", 12.0);
}
}选择列宽
选择至少与最长值一样大的宽度,否则文本会溢出列并破坏对齐。
如果值比字段宽,printf 会完整打印它并忽略指定宽度。
public class Main {
public static void main(String[] args) {
System.out.printf("[%3s]\n", "toolong");
}
}遍历各行
循环配合一个共享的格式字符串,就能轻松生成整张表。
每一轮都会打印一行对齐的内容,因此添加数据不会破坏布局。
public class Main {
public static void main(String[] args) {
String[] names = {"Sun", "Mon", "Tue"};
int[] hrs = {8, 12, 5};
for (int i = 0; i < names.length; i++) {
System.out.printf("%-6s%4d\n", names[i], hrs[i]);
}
}
}结合 String.format
如果您需要在打印前得到文本,可以使用 String.format 构建每个对齐的行。
宽度和对齐规则完全相同。
public class Main {
public static void main(String[] args) {
String row = String.format("%-8s%5d", "Total", 99);
System.out.println(row);
}
}制表符与宽度
您可以使用 \t 制表符分隔列,但制表位各不相同,较长的值会导致对齐错乱。
像 %-10s 这样的固定宽度可以提供可靠且可预测的列,因此制作表格时应优先使用它们。
快速检查
哪种格式可以在 12 个字符的空间中将姓名左对齐?
回顾
您使用宽度字段、用于左对齐的 - 标志,以及用于整齐显示小数列的 %8.2f,构建了对齐的表格。
借助 printf、String.format 和对齐功能,您可以整齐地格式化任何控制台输出。
常见问题解答
「对齐表格」课时是免费的吗?
是的 — 「对齐表格」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Java Academy 课程的其余内容,请升级到 CoddyKit PRO。 Java Academy 课程共包含 4 节课。
「对齐表格」这节课中我会学到什么?
设置数据列的格式 你通过在浏览器中直接运行的动手代码来练习 Java Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Java Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Java Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「对齐表格」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Java Academy 课中编写并运行代码吗?
能。每节 Java Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。