打印二维数组时,除了要遍历所有元素,还需要处理两个核心问题:一是同一行内元素之间的空格对齐,避免元素长度不同导致列错位;二是行与行之间的换行控制,避免出现多余的空行或者换行缺失的情况。不同编程语言的实现逻辑略有差异,但核心思路都是先遍历行,再遍历每行的元素,按需添加空格和换行。

Python中打印二维数组的实现
Python中二维数组通常用列表的列表表示,遍历时可以先遍历外层列表获取每一行,再遍历内层列表获取每个元素。如果需要对齐,可以先计算每列的最大元素长度,再按长度补空格。
基础打印实现
不要求对齐时,直接遍历每行元素拼接后打印即可:
# 定义二维数组
arr = [
[1, 23, 456],
[7890, 12, 3],
[45, 678, 9]
]
# 遍历每一行
for row in arr:
# 遍历行内每个元素,用空格拼接
row_str = ""
for num in row:
# 元素转字符串后拼接空格
row_str += str(num) + " "
# 去除末尾多余空格后打印,自动换行
print(row_str.rstrip())
格式化对齐实现
如果需要列对齐,先计算每列最大长度,再按长度补空格:
arr = [
[1, 23, 456],
[7890, 12, 3],
[45, 678, 9]
]
# 计算二维数组的列数
col_count = len(arr[0])
# 存储每列的最大长度
col_max_len = [0] * col_count
# 遍历所有元素,更新每列最大长度
for row in arr:
for i in range(col_count):
elem_len = len(str(row[i]))
if elem_len > col_max_len[i]:
col_max_len[i] = elem_len
# 打印每一行
for row in arr:
row_str = ""
for i in range(col_count):
elem = str(row[i])
# 补空格到该列最大长度
row_str += elem.ljust(col_max_len[i]) + " "
print(row_str.rstrip())
Java中打印二维数组的实现
Java的二维数组是数组的数组,遍历逻辑和Python类似,同样可以先遍历行,再遍历列元素,按需添加空格和换行。
基础打印实现
public class Print2DArray {
public static void main(String[] args) {
int[][] arr = {
{1, 23, 456},
{7890, 12, 3},
{45, 678, 9}
};
// 遍历每一行
for (int i = 0; i < arr.length; i++) {
// 遍历行内每个元素
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]);
// 不是最后一个元素则加空格
if (j != arr[i].length - 1) {
System.out.print(" ");
}
}
// 每行结束后换行
System.out.println();
}
}
}
格式化对齐实现
Java中可以通过String.format方法控制每个元素的输出宽度,实现列对齐:
public class Print2DArrayAlign {
public static void main(String[] args) {
int[][] arr = {
{1, 23, 456},
{7890, 12, 3},
{45, 678, 9}
};
// 定义每个元素的输出宽度,这里设为5
int width = 5;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
// 左对齐,宽度为width
System.out.print(String.format("%-" + width + "s", arr[i][j]));
}
System.out.println();
}
}
}
常见问题与注意事项
- 换行控制:打印完一行所有元素后,再执行换行操作,避免在遍历元素过程中换行,导致一行元素被拆分成多行。
- 空格处理:同一行元素之间的空格只需要添加在元素之间,最后一个元素后面不需要额外加空格,避免行尾出现多余空格。
- 对齐逻辑:如果数组元素长度差异较大,建议先计算每列最大长度,再按最大长度补空格,保证所有列都能对齐。
- 空行问题:如果使用打印函数自带换行功能,注意不要重复调用换行方法,避免出现多余的空行。
打印二维数组的核心是遍历逻辑和格式控制的结合,只要理清行、列遍历的顺序,再按需添加空格和换行,就能得到符合要求的输出格式。