
本文讲解如何将 java 中按行存储的二维字符串数组(如 [["cat","dog","mouse"],["chair","bench","stool"]])转置并格式化输出为列对齐的表格形式,实现“猫—椅子”“狗—长凳”等垂直对应排列。
本文讲解如何将 java 中按行存储的二维字符串数组(如 [["cat","dog","mouse"],["chair","bench","stool"]])转置并格式化输出为列对齐的表格形式,实现“猫—椅子”“狗—长凳”等垂直对应排列。
在 Java 中,默认按行遍历二维数组(myList[i][j])会逐行输出所有元素,但本例需求是按列组织显示——即第一列输出 "cat" 和 "chair" 并排,第二列输出 "dog" 和 "bench",依此类推。这本质上是将原数组逻辑上“转置”后打印:原数组有 2 行 × 3 列,目标输出为 3 行 × 2 列。
关键在于调整循环逻辑:
- 外层循环控制列索引
i(范围0到myList[0].length - 1),确保覆盖所有列(此处为 3 列); - 内层循环控制行索引
j(范围0到myList.length - 1),遍历每列中的各行(此处为 2 行); - 使用
System.out.printf("%-8s", myList[j][i])实现左对齐、固定宽度(8 字符)的格式化输出,保证各列纵向对齐; - 每次内层循环结束后调用
System.out.println()换行,形成一行一“组”的视觉结构。
完整可运行示例代码如下:
String[][] myList = {{"cat", "dog", "mouse"}, {"chair", "bench", "stool"}};
// 按列优先遍历并格式化打印
for (int i = 0; i < myList[0].length; i++) { // 遍历列(0,1,2)
for (int j = 0; j < myList.length; j++) { // 遍历行(0,1)
System.out.printf("%-8s", myList[j][i]); // 左对齐,占8字符宽
}
System.out.println(); // 每列组合输出完毕后换行
}输出结果:
立即学习“Java免费学习笔记(深入)”;
cat chair dog bench mouse stool
⚠️ 注意事项:
- 此方法要求二维数组为规则矩形结构(每行长度一致),否则
myList[0].length可能引发ArrayIndexOutOfBoundsException;若需兼容不规则数组,应改用myList[i] != null ? myList[i].length : 0动态判断; -
%-8s中的-表示左对齐,8是最小字段宽度,若字符串超长则自动扩展,不影响对齐逻辑; - 若需首字母大写(如
"Cat"),可在打印前调用Character.toUpperCase()和substring()进行转换,例如:myList[j][i].substring(0,1).toUpperCase() + myList[j][i].substring(1); - 替代方案:也可先构建
StringBuilder拼接每行,再统一输出,有利于复杂格式控制或日志记录。
掌握这种“行列角色互换”的循环思维,是处理矩阵转置、表格渲染、CSV 行列转换等场景的基础能力。



















