Можете объяснить, что обозначает данное действие? (раньше такого не встречал)
Внизу представлен целый код, который выводит значения многомерного массива 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
Эта строка заполняет массив, то есть здесь 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 по умолчанию.