arraycopy: last destination index 12 out of bounds for int[6]

Не понимаю, что нужно поменять. Хочу реализовать метод, который может объединить два массива в один.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

public class TwoArraysToOne {

    public static void main(String[] args) {
        int[] array1 = {4, 3, 2, 6, 2, 7};
        int[] array2 = {11, -2, 16, 4, 8, 12};

        connectArrays(array1, array2);
    }

    public static void connectArrays(int[] array1, int[] array2) {
        System.arraycopy(array1, 0, array2, array2.length - 1, array1.length);
        for (int i : array2) {
            System.out.println(i);
        }
    }
}

Ответы (1 шт):

Автор решения: Дмитрий

вы копируете один исходный массив во второй исходный массив, а вам надо создать новый массив и в него скопировать два исходных.

import java.util.Arrays;

public class TwoArraysToOne {

    public static void main(String[] args) {
        int[] array1 = {4, 3, 2, 6, 2, 7};
        int[] array2 = {11, -2, 16, 4, 8, 12};
        int[] connectArrays = connectArrays(array1, array2);
        System.out.println(Arrays.toString(connectArrays));
    }

    public static int [] connectArrays(int[] array1, int[] array2) {
        int [] source = new int [array1.length + array2.length];
        System.arraycopy(array1, 0, source, 0, array1.length);
        System.arraycopy(array2, 0, source, array1.length, array2.length);
        return source;
    }
}
→ Ссылка