Можете объяснить, что обозначает данное действие? (раньше такого не встречал)

Внизу представлен целый код, который выводит значения многомерного массива 4x5: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

public class Program
{
    public static void main(String[] args) {
        int twoD[][] = new int[4][5];
        int i, j, k = 0;
         for (i=0; i < 4; i++)
          for (j=0; j < 5; j++) {
           twoD[i][j] = k;
           k++;
    
      }    
       for (i=0; i < 4; i++) { 
        for (j=0; j < 5; j++)
        System.out.print(twoD[i][j] + " "); 
        System.out.println(); 
    }
   }

} 

Мне не понятно одно действие в этом коде, а именно:

twoD[i][j] = k;

Затем идет оператор увеличения операнда на единицу. Причём, если закоментировать эту строку, то выводится все по нулям.

Интересно, что же это строчка кода делает? Можете объяснить?


Ответы (2 шт):

Автор решения: Алексей Шиманский

Одномерный массив выглядит так:

0 1 2 3 4 5 6 ...

Это можно считать как 7 столбцов и один ряд

В двумерном массиве добавляются ряды:

    j = 0...<5
    --------------
 i  |00 01 02 03 04 
 =  |10 11 12 13 14 
 0  |20 21 22 23 24 
... |30 31 32 33 34 
< 4 |

Каждая строка - это значение i, а каждая колонка - значение j

Вот и получается, что в [i][j] в массив индексом i (строка номер i) в колонке индексом j (столбец номер j) положить значение k

→ Ссылка
Автор решения: Alex

Эта строка заполняет массив, то есть здесь twoD[i][j] = k; значение k присваивается в позицию j массива i (так как у вас массив массивов). То есть ваша программа в первом блоке кода

for (i=0; i < 4; i++) {
        for (j = 0; j < 5; j++) {
            twoD[i][j] = k;
            k++;
    }
}

заполняет массив массивов значениями k, а затем выводит на экран все значения. Если вы за комментируете эту строку twoD[i][j] = k; тогда ваш массив не заполниться никакими значениями, а на экран выведутся нули так как они заполняют массив int по умолчанию.

→ Ссылка