Важно понимать, что Java на самом деле не имеет двумерных массивов. Он имеет массивы массивов. Это означает, например, что вы можете иметь это:
int[][] array=
{
{1},
{1, 2, 3},
{1, 2, 3, 4, 5},
{1, 2}
};
Так нет один верхней границы второго уровня. Массивы Java по своей сути зазубрены, каждый из второго уровня в приведенном выше имеет свою собственную длину.
Так цикл их правильно, вы должны проверить для каждого из массивов второго уровня:
int x, y;
int[] second;
for (x = 0; x < array.length; ++x) {
second = array[x];
for (y = 0; y < second.length; ++y) {
// ....
}
}
Полный пример: Live Copy
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
Что вы подразумеваете под верхними границами? – Maroun
Пожалуйста, не используйте капители в качестве первой буквы имен переменных java. – vikingsteve
Особенно названия, которые являются классами в JDK! – Bohemian