Скажем, я создал таблицу
char[][] table = new char[5][5];
и что я хотел повторить его, используя for loop
for для создания "пространства".
for (int i = 0; i < table.length; i++)
for (int j = 0; j < table[i].length; j++)
table[i][j] = ' ';
Во второй строке, что означает [i] в table[i].length
? почему он не может быть просто table.length, как первая строка? спасибо
Ваше выражение:
char[][] table = new char[5][5];
эквивалентно:
// declare array of size 5, each element is a reference to one-dimen char[] array
char[][] table = new char[5][];
// initialize elements of table array, i.e. each row
table[0] = new char[5];
table[1] = new char[5];
table[2] = new char[5];
table[3] = new char[5];
table[4] = new char[5];
Примечание: вы могли бы инициализировать каждую "строку" массивами разного размера, например
table[3] = new char[255];
а table[1].length
будет равна 5, а table[3].length
- 255.
Эти размеры массивов ["rows"] не зависят от размера массива "aggregate" table.length
, поэтому вам нужно table.length
через каждую "строку", используя размер этого массива "строка".
Это происходит потому, что вы выполняете итерацию над двумерным массивом. Я рекомендую вам проверить двухмерный массив.
char[][] table = new char[5][3];
?table.length
даст вам 5, аtable[0].length
даст вам 3.