Java格式化输出实现网格列右对齐问题求助
Java实现网格数字字符串列右对齐
要实现网格元素按列右对齐,你可以使用Java的String.format()方法来格式化每个元素,自动填充空格保证固定宽度,替代原来硬编码空格的方式。
修改后的toString()方法
@Override public String toString() { StringBuilder sb = new StringBuilder(); // 遍历每一行 for (int i = 0; i < grid.length; i++) { // 遍历当前行的每一列 for (int j = 0; j < grid[i].length; j++) { // 格式化每个元素为3位右对齐的字符串,可根据需求调整宽度数字(比如4) sb.append(String.format("%3s", grid[i][j])); // 列之间额外加一个空格(可选,根据期望格式调整) if (j != grid[i].length - 1) { sb.append(" "); } } // 每一行结束后换行,最后一行无需额外换行 if (i != grid.length - 1) { sb.append("\n"); } } return sb.toString(); }
关键说明
- 格式化规则:
%3s表示将字符串格式化为3位宽度、右对齐的格式。如果元素是1位数字(比如"1"),会自动在左侧补1个空格变成" 1";如果是2位数字(比如"12"),则显示为" 12",这样就能保证每一列的元素右侧对齐。 - 灵活调整宽度:如果需要更宽松的列间距,可以把
%3s改成%4s,每个元素占4位宽度,左侧补更多空格。 - StringBuilder优化:用
StringBuilder拼接字符串比直接用+号更高效,尤其当网格规模较大时。
效果示例
假设网格元素为:
grid[0] = {"1", "12", "14", "23", "1"} grid[1] = {"12", "1", "12", "53", "26"}
修改后的输出会是:
1 12 14 23 1 12 1 12 53 26
内容的提问来源于stack exchange,提问作者user25451664
相关产品推荐
相关产品推荐

