Элементы двух массивов нужно поочередно занести в 3 массив. К примеру массивы A(n) и B(n) нужно записать как C(a1, b1, a2, b2, a3, b3)
public static void main(String[] args) {
int[] arr1 = {0, 2, 4, 6, 8};
int[] secarr6 = {1, 3, 5, 7, 9};
int[] thirdarr = new int[arr1.length + secarr6.length];
for (int i = 0; i < arr1.length; i++) {
thirdarr[i * 2] = arr1[i];
}
for (int j = 0; j < secarr6.length; j++) {
if (j % 2 != 0 || j == 0) {
thirdarr[] = secarr6[];
}
}
System.out.println(Arrays.toString(thirdarr));
}
c arr1 берет правильно, с secarr6 не понимаю (
Для равных длин массивов достаточно сделать
for (int i = 0; i < arr1.length; i++) {
thirdarr[i * 2] = arr1[i];
thirdarr[i * 2 + 1] = secarr6[i];
}
Однако в вопросе не говорится о равных длинах. В таком случае возможный вариант - записывать попарно, сколько можно, затем скопировать остаток более длинного массива
if (arr1.length < secarr6.length) {
interlen = arr1.length;
slen = secarr6.length - arr1.length;
alen = 0;
}
else if (arr1.length > secarr6.length) {
interlen = secarr6.length;
alen = arr1.length - secarr6.length;
slen = 0;
}
else {
alen = 0;
slen = 0;
}
for (int i = 0; i < interlen; i++) {
thirdarr[i * 2] = arr1[i];
thirdarr[i * 2 + 1] = secarr6[i];
}
for (int i = 0; i < alen; i++) {
thirdarr[interlen * 2 + i] = arr1[i + interlen];
}
for (int i = 0; i < slen; i++) {
thirdarr[interlen * 2 + i] = secarr6[i + interlen];
}
public static void main(String[] args){
int[] arr1 = {0, 2, 4, 6, 8};
int[] secarr6 = {1, 3, 5, 7, 9};
int[] thirdarr = new int[arr1.length + secarr6.length];
for (int i = 0; i < arr1.length; i++) {
thirdarr[i * 2] = arr1[i];
thirdarr[i*2+1]=secarr6[i]
}
1) Во втором цикле, по моему, вы что-то перемудрили. Я не понял, чего вы хотели добиться своей проверкой if (j % 2 != 0 || j == 0)
. Если длины массивов заведомо равны, то второй цикл должен выглядеть точно так же, как первый, с той разницей, что данные берутся из второго массива, а не из первого, и заносятся в третий массив по индексу j * 2 + 1
, Иными словами, элементы первого массива становятся чётными элементами третьего, а элементы второго -- нечётными. И у вас индексы отсутствуют. То есть код второго цикла будет таким:
for (int i = 0; i < a2.length; i++)
a3[i * 2 + 1] = a2[i];
Но MBo прав -- если массивы равной длины, то всё это можно делать в одном цикле (сами подумайте -- зачем разбивать на два отдельных цикла действия, которые повторяются одинаковое число раз с одинаковым индексом):
for (int i = 0; i < a1.length; i++) {
a3[i * 2] = a1[i];
a3[i * 2 + 1] = a2[i];
}
2) Если массивы могут быть разной длины, то возможен такой вариант кода:
int[] a1 = { ... }, a2 = { ... };
int[] a3 = new int[a1.length + a2.length];
int maxLen = Math.max(a1.length; a2.length), j = 0;
for (int i = 0; i < maxLen; i++) {
if (i < a1.lenght) a3[j++] = a1[i];
if (i < a2.length) a3[j++] = a2[i];
}
Этот код и на массивах одинаковой длины будет работать, так что нет большого смысла отдельно рассматривать случай для массивов одинаковой длины и случай для массивов разной длины.
В цикле инкрементируем указатель для каждого из массивов.
int[] arr1 = new int[0];
//int[] arr1 = {0, 2, 4, 6, 8, 15, 17};
int[] secarr6 = {1, 3, 5, 7, 9};
int[] thirdarr = new int[arr1.length + secarr6.length];
int index1 = 0; // указатель для arr1
int index2 = 0; // указатель для secarr6
while ((index1 + index2) < thirdarr.length ){
if (index1 < arr1.length) thirdarr[index1 + index2] = arr1[index1++];
if (index2 < secarr6.length) thirdarr[index1 + index2] = secarr6[index2++];
}
System.out.println(Arrays.toString(thirdarr));
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пытаюсь создать тренировочный код, позволяющий выгружать с сайта wwwflickr
Всем приветДопустим создаю уведомление обычное в сервисе с помощью NotificationCompat
Проблема заключается в том, что я не могу подключиться к серверному сокету на хероку