Java中管理字符串空格实现输出对齐的简便方法有哪些?
Java对齐输出的简便实现方案
这类固定格式对齐的需求完全不需要写if-else判断补空格,直接用JDK自带的格式化输出语法即可实现。
核心实现方法
使用System.out.printf()或者String.format()的格式化占位符语法,通过指定固定宽度+左对齐的规则,自动在短标签尾部补空格实现对齐:
String inputName = scanner.nextLine(); String inputAge = scanner.nextLine(); // 直接输出场景 // %-8s 表示左对齐、占8个字符宽度的字符串,不足自动补空格 System.out.printf("%-8s%s%n", "Name:", inputName); System.out.printf("%-8s%s%n", "Age:", inputAge); // 如果需要先拼接为字符串再使用 String nameLine = String.format("%-8s%s", "Name:", inputName); String ageLine = String.format("%-8s%s", "Age:", inputAge); System.out.println(nameLine); System.out.println(ageLine);
运行后输出效果和你要求的完全一致:
Name: Jay Age: 29
动态适配变长标签的进阶写法
如果后续要新增更多长度不一的标签(比如Email:、Address:),可以先自动计算最长标签的宽度,动态设置格式化参数,不用手动调整固定宽度值:
import java.util.Arrays; import java.util.List; // 先统计所有标签的最大长度,额外加4个字符作为标签和内容的留白 List<String> allLabels = Arrays.asList("Name:", "Age:", "Email:", "Address:"); int maxWidth = allLabels.stream().mapToInt(String::length).max().orElse(0) + 4; System.out.printf("%-" + maxWidth + "s%s%n", "Name:", inputName); System.out.printf("%-" + maxWidth + "s%s%n", "Age:", inputAge);
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

