如何在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
相关产品推荐
相关产品推荐

