Here is my method to merge two sorted arrays:
public static int[] AddString(int[] a, int[] b, int pos, int n){
if(n > 1){
if(a[0] > b[0] && !(a.length == 0)){
c[pos] = b[0];
b = Arrays.copyOfRange(b, 1, b.length);
}else{
c[pos] = a[0];
a = Arrays.copyOfRange(a, 1, a.length);
}
AddString(a, b, pos + 1, n - 1);
}
return c;
}
I need to combine two sorted arrays. These are the arrays:
static int[] c = new int[String1.length + String2.length];
static int[] array1 = new int[]{2, 4, 6, 8, 10, 12, 14, 16, 18, 20};
static int[] array2 = new int[]{2, 4, 8, 16, 32, 64, 128, 256, 512, 1024};
Line used to invoke AddString:
System.out.println(Arrays.toString(AddString(String1, String2, 0, n)));
Now my application returns this error:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at com.company.Main.AddString(Main.java:21)
at com.company.Main.AddString(Main.java:28)
at com.company.Main.AddString(Main.java:28)
at com.company.Main.AddString(Main.java:28)
at com.company.Main.AddString(Main.java:28)
at com.company.Main.AddString(Main.java:28)
at com.company.Main.AddString(Main.java:28)
at com.company.Main.AddString(Main.java:28)
at com.company.Main.AddString(Main.java:28)
at com.company.Main.AddString(Main.java:28)
at com.company.Main.AddString(Main.java:28)
at com.company.Main.AddString(Main.java:28)
at com.company.Main.AddString(Main.java:28)
at com.company.Main.AddString(Main.java:28)
at com.company.Main.AddString(Main.java:28)
at com.company.Main.main(Main.java:14)
I understand this is because my application is working with a non existant array index but I don't understand where this happens. The problem occurs when array1 is empty. Could anyone help me?