DAVIDBALAS1
DAVIDBALAS1

Reputation: 484

Merging two arrays and short that merged array

I got homework "Take two given array(already sorted up, for example {1,2,3}) and create a new array contains both arrays and then sort him up", we have a function to sort up arrays so it's not the problem, however it gets a little bit complex to me, here is my code:

public static Scanner in = new Scanner(System.in);

    public static void main(String[] args) {
        int[] a = new int[3];
        int[] b = new int[5];
        Help_arr.scan(a);
        Help_arr.scan(b);
        Help_arr.print(peula(a, b));
    }

    public static int[] peula(int[] a1, int[] b1) {
        int[] c = new int[a1.length + b1.length];
        for (int i = 0; i < a1.length; i++)
            c[i] = a1[i];
        for (int i = a1.length; i < c.length; i++){
            c[i] = b1[i];
        }
        Help_arr.sortup(c);
        return c;
    }

Functions used from Help_arr class:

1) Scan an array:

public static void scan(int[] arr1) {
    for (int i = 0; i < arr1.length; i++) {
        System.out.println("Enter number" + (i + 1));
        arr1[i] = in.nextInt();
    }
}

2) Print an array:

public static void print(int[] arr1) {
    for (int i = 0; i < arr1.length; i++) {
        System.out.print(arr1[i] + " ");
    }
}

3) Sort up an array:

public static void sortup(int[] arr1) {
    int i, mini, temp, j;
    for (j = 0; j < arr1.length; j++) {
        mini = j;
        for (i = j; i < arr1.length; i++) {
            if (arr1[i] < arr1[mini])
                mini = i;
        }
        temp = arr1[j];
        arr1[j] = arr1[mini];
        arr1[mini] = temp;
    }
}

I get an error in the line c[i]=b1[i]; the array is going out of index bounds but I followed the code and this for will run until i=7 as the c.length is 8 and it is possible. But maybe I am missing something, here is the error:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
    at arrays.PgRonTargilMivhan.peula(PgRonTargilMivhan.java:21)
    at arrays.PgRonTargilMivhan.main(PgRonTargilMivhan.java:13)

Upvotes: 0

Views: 60

Answers (2)

Shaan
Shaan

Reputation: 598

Please find the logic ..

you were using 'i' index for array b is the problem.

Solution is below. Good luck

int[] c = new int[a.length + b.length];
    int i = 0;
    for (i = 0; i < a.length; i++)
        c[i] = a[i];
    for (int j = 0; j < b.length; j++)
        c[i] = b[j];
    }

Upvotes: 0

Atri
Atri

Reputation: 5831

The issue is with this code:

for (int i = a1.length; i < c.length; i++){
       c[i] = b1[i];

here b1 index should start with 0 but you are starting with a1.length. You should have a separate index for b1 or use b1[i-a1.length].

Upvotes: 3

Related Questions