Для цикла итерации по таблице

1

Скажем, я создал таблицу

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, как первая строка? спасибо

  • 0
    Что вы думаете о char[][] table = new char[5][3]; ?
  • 0
    table.length даст вам 5, а table[0].length даст вам 3.
Показать ещё 2 комментария
Теги:
for-loop

2 ответа

2
Лучший ответ

Ваше выражение:

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 через каждую "строку", используя размер этого массива "строка".

0

Это происходит потому, что вы выполняете итерацию над двумерным массивом. Я рекомендую вам проверить двухмерный массив.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню