MULTIPLICATION_TABLE = new int[10][10];
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= 10; j++) {
MULTIPLICATION_TABLE[i - 1][j - 1] = i * j;
System.out.print(MULTIPLICATION_TABLE[i - 1][j - 1]);
System.out.print(" ");
}
System.out.println();
}
зачем из переменных i и j вычитается 1? (строка 5)Iscile
21 уровень
Смысл данной строки?
Решен
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
JustinianJudge в Mega City OneMaster
7 мая 2021, 23:12решение
Индексы массива начинаются с нуля.
Массив, в котором есть 10 чисел, от 1 к 10 выглядит так:
вот массива int[10] на 10 элементов:
индекс - значение элемента
[0] - 1
[1] - 2
[2] - 3
[3] - 4
[4] - 5
[5] - 6
[6] - 7
[7] - 8
[8] - 9
[9] - 10
но чтобы вывести табличку умножения мы не можем заполнять массив с нуля, мы заполняем с единички,
но единичка лежит в ячейке 0, двойка лежит в ячейке 1 и тд
Вот и получается -1
фактически отображает не индексы, а именно сами элементы и числа, поэтому можно умножать (это нельзя было бы реализовать иначе, поскольку на ноль умножать смысла мало, начинать с единички)
А раз начинать с единички, а индекс нужен нам нулевой, то и получилось -1
можешь почитать вот здесь тоже
https://javarush.com/groups/posts/massivy-java
+6
IscileРаботает в хочу в гугл
7 мая 2021, 23:38
понял, спасибо!
0
Олег Курочкин
2 августа 2021, 11:27
Спасибо!
+1
Begemot Java Developer
15 августа 2021, 12:34полезный
Если не вычитать, то можно сделать так. Смысл тот же.
+5
Hidden #213 Урoвень 13 (Forever&Ever)
23 сентября 2021, 10:20
Так ведь более правильно? Я правильно понимаю?
Везде, где я видел (книги, ютуб), заполнение начинают с i = 0, а уже потом прибавляют единицу, если нужно (i+1)
Или можно и так, и так?
0
Roman Zlotin
4 января 2022, 15:27
MULTIPLICATION_TABLE[i][j] = (i+1)*(j+1); - а ты можешь мне обьяснить подробно эту строчку? Я плохо понимаю как в данном случае заполняется двумерный массив в таком случае. С обычными всё ок понимаю, а вот тут мозг взрывается
0