可変長の 2 次元配列を出力するには、内側のループ0
を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
は 2 次元配列です。
- したがって、あなたの各要素
arr
は1-D array
.
- は 1次元
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
、今度は の別の欠落が必要ですrows
。そして、それがあなたの内側のループになります。
現在、内側のループでは(j, i)
、現在の行に列数がない可能性があるため、配列要素をインデックスに出力することはできませんmax
。そのため、それを確認するために を入れる必要がありますif-condition
。