You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java中使用printf命令垂直打印字符串数组

用printf实现字符串数组的缩进垂直打印

我有如下字符串数组需要打印:

String[] provinces = 
{ 
    "Ontario", 
    "Quebec", 
    "Nova Scotia",
    "New Brunswick", 
    "Manitoba", 
    "British Columbia",
    "Prince Edward Island"         
};

之前我用这段代码实现了带固定缩进的垂直打印效果:

for (String spiceTraders: provinces) {
    System.out.println("              " + spiceTraders);
}

现在希望改用printf命令实现完全相同的输出,预期效果如下:

Ontario
          Quebec
          Nova Scotia
          New Brunswick
          Manitoba
          British Columbia
          Prince Edward Island

实现代码

直接沿用原缩进逻辑,结合printf的格式化语法即可:

for (String province : provinces) {
    System.out.printf("              %s%n", province);
}

说明

  • 保留原代码中的固定缩进空格,确保缩进量和之前完全一致
  • %s是字符串占位符,会被循环中的每个省份名称替换
  • %n是平台无关的换行符,作用和println的自动换行完全相同

如果想通过格式化宽度实现(不用直接写空格),可以计算总宽度后使用左对齐格式化,示例如下:

// 按最长字符串+缩进量设置总宽度,这里总宽度设为26(最长字符串长度21+5?不对,原缩进是10个空格的话总宽度是31,按需调整)
for (String province : provinces) {
    System.out.printf("%-31s%n", province);
}

不过这种方式需要根据最长字符串长度调整宽度,不如直接写固定空格直观,更贴合原代码的逻辑。

内容的提问来源于stack exchange,提问作者CosmicEntity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 11:15:25