要打印可变长度的二维数组,您的内部循环运行 from0
到the current row
length :-
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) { // Closely see inner loop
System.out.println(arr[i][j]);
}
}
arr[i]
是当前行。并arr[i].length
给出该行的列数。
你可以这样推断:-
arr
是一个二维数组。
- 所以,你的每个元素
arr
都是一个1-D array
.
- 所以,
arr[i]
是一维数组。代表每一行。
- 要获取每行中的列数,您可以
arr[i].length
现在,你可以在你的问题中应用同样的东西。
实际上,您for loop
的运行错误。您outer loop
正在从 运行col = 0 to col < uneven.length
,但它应该从以下运行:-row = 0 to row < uneven.length
所以,你的 for 循环应该是这样的: -
for ( int row=0; row < uneven.length; row++ )
{
System.out.print("Row " + row + ": ");
for( int col=0; col < uneven[row].length; col++ ) {
System.out.print( uneven[row][col] + " ");
}
System.out.println();
}
更新 : -
好吧,我首先把你的问题弄错了。如果要打印column wise
,可以使用以下代码:-
int[][] uneven =
{ { 1, 3, 100, 6, 7, 8, 9, 10},
{ 0, 2},
{ 0, 2, 4, 5},
{ 0, 2, 4, 6, 7},
{ 0, 1, 4, 5 },
{ 0, 1, 2, 3, 4, 5, 6 }};
int max = -1;
for ( int row = 0; row < uneven.length; row++ ) {
if (uneven[row].length > max) {
max = uneven[row].length;
}
}
System.out.println(max);
for (int i = 0; i < max; i++) {
for (int j = 0; j < uneven.length; j++) {
if (uneven[j].length <= i) {
continue;
}
System.out.print(uneven[j][i] + " ");
}
System.out.println();
}
首先,您需要在每行的所有列数中找到最大值。
然后再次运行循环,从 0 到最大列。现在,既然你有一个 lop for columns
,现在你需要另一个 for rows
。这将是你的内在循环。
现在,在内部循环中,您不能只在(j, i)
索引处打印数组元素,因为当前行可能没有max
列数。所以,你需要放一个if-condition
来检查。