如何实现Java二维数组的指定格式垂直打印?
如何实现二维数组的垂直列反转输出
直接上修改后的代码,完全匹配你的期望输出:
public class test { public static void main(String[] args) { double nums1[][] ={{1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; printVert(nums1); } public static void printVert(double[][] nums) { // 取第一列的元素个数作为垂直输出的行数(假设所有列长度一致) int rowCount = nums[0].length; // 从最后一个元素倒序遍历每一行 for (int j = rowCount - 1; j >= 0; j--) { // 遍历每个列,取出对应位置的元素 for (int i = 0; i < nums.length; i++) { // 格式化输出:保留两位小数,固定宽度对齐 System.out.printf("%.2f ", nums[i][j]); } System.out.println(); } // 打印底部的列标题 for (int i = 0; i < nums.length; i++) { System.out.printf("Col %-2d ", i + 1); } } }
关键逻辑说明
- 反转遍历顺序:原方法是先遍历列(子数组)再遍历列内元素,现在反过来——先从列的最后一个元素往前遍历,再逐个提取每个列的对应元素,这样就实现了垂直倒序输出。
- 格式化对齐:用
printf替代print,通过%.2f保证两位小数,固定宽度的格式化字符串让每一列的内容整齐对齐,避免输出混乱。 - 单独处理标题行:把列标题放在所有元素行的下方,单独循环打印即可。
输出结果
3.00 6.00 9.00 2.00 5.00 8.00 1.00 4.00 7.00 Col 1 Col 2 Col 3
注意事项
- 代码默认所有列的元素个数一致,如果你的数组存在列长度不一的情况,需要添加
nums[i].length > j的判断,避免数组越界。 - 可以调整格式化字符串的宽度(比如把
%.2f改成%-10.2f),根据需求优化列间距。
内容的提问来源于stack exchange,提问作者Sanallan
相关产品推荐
相关产品推荐

