Почему валидатор не принимает цикл заполнения multiArray = new int[ i ][ j ]
Принимает только так - multiArray[ i ] = new int[ j ]
Разве это не одно и то же?
for (int i = 0; i < multiArray.length; i++){
int j = console.nextInt();
multiArray = new int[i][j];}
wf
33 уровень
Объясните разницу при заполнении массива между multiArray = new int[ i ][ j ] и multiArray[ i ] = new int[ j ]
Обсуждается
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
ГоффMaster
6 февраля 2022, 14:02
multiArray - это массив, в котором каждый элемент массива (multiArray[i]) представляет из себя массив длиной j (new int[j])
То-есть у нас здесь несколько массивов, один multiArray длины, скажем, 10, и ещё 10 безымянных массивов, каждый своей длины.
То-есть нам надо создать всего 11 массивов. Один мы создаём без цикла
multiArray = new int[10][];
Остальные 10 создаём в цикле оператором multiArray[i] = new int[j];
multiArray = new int[i][j]; - это создание нового массива multiArray размером i на j. Сколько раз у тебя цикл прокрутится, столько раз создастся новый массив.
+1
wf
6 февраля 2022, 15:35
МоСк кипит)))
Тем не менее у нас уже создан i и имеет длину array.length
То есть я записываю в каждый i свой j путем создания new i и j
Причем самое интересное, что программа работает, но валидатор не принимает решение.
Короче говоря, я пока неуч)))
Буду дальше проходить лекции, потом попытаюсь заново всё пройти сначала и осознать
0
ГоффMaster
6 февраля 2022, 16:40
Программа работает, но не так, как надо ;-)
Часто бывает, что сначала в голове не укладывается, а на утро наступает озарение и всё сразу так стройненько и логичненько...
+2
Серега Батенин
21 февраля 2022, 17:49
Когда ты иницализируешь массив через new int[i][j] то у тебя получается массив правильной прямоугольной формы, условно i = 3, j = 4, то массив будет 3 на 4. А когда ты проводишь инициализацию через array[i] = new int[j], то у тебя каждая строка может быть разной длины, в итоге если его на печать, то ты увидишь своего рода "эквалайзер"(в горизонтальном виде) мне кажется самая близкая ассоциация к тому как это выглядит))
0
AV
6 февраля 2022, 13:59
Инициализация двумерного массива происходит путем:
Если тебе нужно заполнить массив, то прописываешь так:
Такой код для заполнения не подходит так как ты создаешь новый двумерный массив, да и размер массива изменять нельзя, а именно количество i;
Если что неверно, думаю поправят)
+1
wf
6 февраля 2022, 15:29
Размер массива изменять нельзя, однако если в цикле for длину массива указать +1, то выскакивает ошибка переполнения.
То есть, по сути, при записи new int[ i ][ j ] после создания мультимассива new int[][], мы добавляем строки j к столбцам i, в противном случае будет переполнение
К тому же int[ ] [ ] array и int array [ ] [ ] - две стороны одной монеты
0