次のような 2D 配列があります。
int[][] array=
{
{2,3,3},
{5,6,66}
};
行と列の長さを取得したい:
int rows= // get row length of array
int columns= // get column length of array
ありがとう!
Java には実際には 2 次元配列がないことを理解することが重要です。配列の配列があります。つまり、たとえば、次のようにすることができます。
int[][] array=
{
{1},
{1, 2, 3},
{1, 2, 3, 4, 5},
{1, 2}
};
したがって、第 2 レベルの上限はありません。Java 配列は本質的にギザギザであり、上記の 2 番目のレベルにはそれぞれ独自の長さがあります。
したがって、それらを正しくループするには、第 2 レベルの配列のそれぞれをチェックする必要があります。
int x, y;
int[] second;
for (x = 0; x < array.length; ++x) {
second = array[x];
for (y = 0; y < second.length; ++y) {
// ....
}
}
完全な例:ライブコピー
public class ArrayExample {
public static void main(String[] args) {
int[][] array=
{
{1},
{1, 2, 3},
{1, 2, 3, 4, 5},
{1, 2}
};
int x, y;
int[] second;
for (x = 0; x < array.length; ++x) {
second = array[x];
for (y = 0; y < second.length; ++y) {
System.out.println(x + "," + y + ": " + second[y]);
}
System.out.println();
}
}
}
出力:
0,0: 1 1,0: 1 1,1:2 1,2:3 2,0: 1 2,1:2 2,2:3 2,3:4 2,4:5 3,0: 1 3,1:2
または、インデックスが不要で値だけが必要な場合は、強化されたfor
ループを使用できます: Live Example
public class ArrayExample {
public static void main(String[] args) {
int[][] array=
{
{1},
{1, 2, 3},
{1, 2, 3, 4, 5},
{1, 2}
};
for (int[] second : array) {
for (int entry : second) {
System.out.println(entry);
}
System.out.println();
}
}
}
出力:
1 1 2 3 1 2 3 4 5 1 2
これを試して
int upperBound0 = array.length - 1; // = 1
int upperBound1 = array[0].length - 1; // = 2
あなたがコメントしたように:
上限は行と列の最大インデックスです