public class Solution {
public static int[] firstArray = new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
public static int[] secondArray = new int[]{10, 11, 12, 13, 14, 15, 16, 17, 18, 19};
public static int[] resultArray;
public static void main(String[] args) {
resultArray = new int[firstArray.length + secondArray.length];
for(int i = 0; i < firstArray.length; i++){
resultArray[i] = firstArray[i];
}
for(int i = 0; i < secondArray.length; i++ ){
resultArray[i + firstArray.length] = secondArray[i];
}
for (int i = 0; i < resultArray.length; i++) {
System.out.print(resultArray[i] + ", ");
}
}
}Darginid
11 уровень
Немного не понял что происходит в выражении: "resultArray[i + firstArray.length] = secondArray[i];"
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
MEGAVOLT
25 февраля 2023, 21:02решение
Смотри, тебе необходимо объединить (засунуть) два массива(firstArray и secondArray), каждый из которых длинной 10 ячеек в третий массив (resultArray).
В самом начале resultArray просто объявляется, то есть просто сообщается компилятору, что будет такой массив с таким именем, но размер этого массива пока не задан, это вот эта строчка:
public static int[] resultArray;
Далее, уже в методе Main, нам нужно определиться, какой будет размер у этого массива resultArray. Можно было бы тупо написать, что он длинной 20 ячеек (10 ячеек от firstArray и 10 ячеек отsecondArray), но это неправильно, так как завтра ты или другой программист допишет в firstArray или secondArray еще значения (или наоборот удалит) и размер этих массивов станет скажем 11 и 12, а у тебя в коде для массива resultArray будет по-прежнему 20 ячеек, и в него просто не влезет 23 ячейки.
Поэтому более правильно, чтобы программа сама определила, какую длину должен иметь массив resultArray. Для определения длинны массива есть метод lengt.
Вот мы и вызываем его для массивов firstArray.length и secondArray.length.
Далее мы сначала должны "пробежаться" сначала по массиву firstArray и все значения в нем переписать (присвоить) в новый массив resultArray, причем мы начнем присваивать их с индекса 0 до индекса не более длинны массива firstArray.length.
Потом уже дальше мы должны "пробежаться" по второму массиву secondArray, но записывать его значения мы должны не с начала, а с того места, где мы закончили записывать значения из firstArray. Именно поэтому мы прибавляем к индексу второго цикла, длинну первого массива (который уже записан в первые ячейки нового массива resultArray). То есть пишем, что обращаемся к индексу по номеру i+firstArray.length/
Надеюсь понятно написал :-)
+12
Anonymous #3350283
19 октября 2023, 00:06
Госпади, чувак , тебе в менторы надо , неужели кто то наконец сумел обьяснить все это действительно человеческим и понятным языком ! Благодарность тебе великая!!!
0
Anonymous #3252296
25 февраля 2023, 13:43
Первый цикл у тебя записывает первый массив в ячейки от 0 до длины первого массива. Второй цикл записывает второй массив в ячейки от длины первого массива до длины первого + второго массива.
0
Андрей Столяров
25 февраля 2023, 13:22
Тоже что и на строке 9, но только запись в массив result будет начинаться не с начала, а с ячейки под индексом i + firstArray.length (10)
0