Java使用制表符\t打印对齐列格式任务列表的实现方案
控制台列对齐打印ArrayList内容的解决方案
问题原因
- 你当前使用
\t实现对齐失效的核心原因是:制表符的宽度是固定的(通常为4/8个字符),如果某行的任务名称长度超过一个制表位的长度,下一个制表位的偏移量就会和其他行不一致,最终导致列错位。
解决方案
使用Java自带的格式化输出方法printf,通过指定固定宽度的占位符强制每列的长度,实现精准对齐:
public void printList(){ // 占位符说明:%-20s = 左对齐、占20个字符位的字符串;%-15s = 左对齐、占15个字符位的字符串;%n是跨平台换行符 System.out.printf("%-20s %-15s%n", "Task", "Due date"); for (Task task : taskArrayList) { System.out.printf("%-20s %-15s%n", task.getTask(), task.getDate()); } }
参数调整说明
- 如果你的任务名称普遍更长,可以把
%-20s中的数值20调整为更大的数值,确保最长的任务名也能完整展示,不会挤占下一列的位置。 - 如果需要列内容右对齐,去掉占位符中的
-符号即可,例如%20s就代表右对齐、占20个字符位的字符串。
内容的提问来源于stack exchange,提问作者Rafael Rubenstein
相关产品推荐
相关产品推荐

