我在打印列时遇到问题。当代码达到“100”时,它会停止读取它下方的内容,因为它是空的:
public class Column{
public static void main( String[] arg )
{
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 }};
for ( int col=0; col < uneven.length; col++ )
{
System.out.print("Col " + col + ": ");
for( int row=0; row < uneven.length; row++ )
System.out.print( uneven[row][col] + " ");
System.out.println();
}
}
}
我应该怎么做以便继续阅读专栏?
答案 0 :(得分:3)
要打印可变长度的二维数组,内部循环从0
到the current row
长度: -
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到最大列。现在,既然你有columns
的lop,现在你需要另一个rows
。那将是你的内心循环。
现在,在内部循环中,您不能只在(j, i)
索引处打印数组元素,因为当前行可能没有max
列数。因此,您需要设置if-condition
来检查。
答案 1 :(得分:0)
替换:
for( int row=0; row < uneven.length; row++ )
使用:
for( int row=0; row < uneven[col].length; row++ )