# 2 Arrays mergen



## Lord_Tribual (6. Februar 2009)

Hallo @ all,

Also ... 
Ich wollte für ein Programm, 2 Arrays zusammenfügen sprich mergen.
Lediglich das anhängen von Arrays ist easy ... sprich man hat:

int [ ] Array = {1,2,3,4};
und
z.b. 
int [ ] Array2 = {5,6,7,8};

das Ergebnis wäre dann logischerweise 12345678 ... also das mergen bekomme ich mit einer Methode hin ... doch nun zu meiner Frage:

Ich möchte die selben Arrays zusammenfügen jedoch abwechselnd ... schwer zu erklären  ... Also es besteht ein 3 Arrys ... das solang ist wie beide Arrays davor ... also mit 8 Werten und 7 Indexe ... 

Ich möchte es jedoch nun so mergen das jeweils ein Wert von Array und ein Wert von Array2 eingefügt werden bis alle Werten abwechselnd eingefügt wurden ... 
Das Ergebnis würde so ausschauen:

1,5,2,6,3,7,4,8 ... ich hoffe man kann es verstehen ^^ ... hatte meine Probleme mich bei meinen Problem richtig zu verständigen ... tut mir leid  

Hoffe mir kann jemand helfen ... 

Ich hatte schon einen Ansatz aber jedoch bekomme ich immer eine OutOfBounceException ... aber ich habe keine Ahnung ... ^^

Liebe Grüße, Lord_Tribual


----------



## RedWing (7. Februar 2009)

Hallo,

wie wäre es damit?


```
int[] array1 = new int[]{1, 2, 3, 4};
        int[] array2 = new int[]{5, 6, 7, 8};
        int[] result = new int[array1.length + array2.length];
      
        for (int i = 0; i < result.length; i += 2) {
            result[i] = array1[i / 2];
            result[i + 1] = array2[i / 2];
        } 

        for (int elem : result)
            System.out.println(elem);
```

P.S. array1 und array2 sollten dabei nat. gleich groß sein...

Gruß,
RedWing


----------



## Kai008 (7. Februar 2009)

€: Mist, zu langsam. ;____;

Dann ist wohl das Array zu klein. 
Also ich fand es einfach zu verstehen, hab schon bei "Ich möchte die selben Arrays zusammenfügen jedoch abwechselnd" gewusst (bzw. richtig geahnt) was du meinst.
Ist vielleicht nicht soooo schön, aber es steht dir ja frei es zu verbessern. Da ich nicht wusste was er bei Arrays mit ungleicher Länge machen soll (es direkt dranschreiben oder den Rymus beibehalten?) bricht er in dem Fall mit ner Null ab.


```
package core;

public final class Main
{
	public Main()
	{
		int[] array0 = this.createAndFillArray0();
		int[] array1 = this.createAndFillArray1();
		int[] array2 = this.mergeArrays(array0, array1);
		this.outputteArray(array2);
	}
	private final int[] createAndFillArray0()
	{
		int[] array0 = new int[4];
		
		array0[0] = 1;
		array0[1] = 2;
		array0[2] = 3;
		array0[3] = 4;
		
		return(array0);
	}
	private final int[] createAndFillArray1()
	{
		int[] array1 = new int[4];
		
		array1[0] = 5;
		array1[1] = 6;
		array1[2] = 7;
		array1[3] = 8;
		
		return(array1);
	}
	private final int[] mergeArrays(int[] array0, int[] array1)
	{
		int oldArrayLenghtOne = array0.length;
		int oldArrayLenghtTwo = array1.length;
		
		if(oldArrayLenghtOne != oldArrayLenghtTwo)
			return(null);
		
		int newArrayLenght = (oldArrayLenghtOne * 2);
		int[] array2 = new int[newArrayLenght];
		
		for(int i = 0, j = 0; i < oldArrayLenghtOne; i++, j+=2)
			array2[j] = array0[i];
		for(int i = 0, j = 1; i < oldArrayLenghtOne; i++, j+=2)
			array2[j] = array1[i];
		
		return(array2);
	}
	private final void outputteArray(int[] array)
	{
		for(int number:array)
			System.out.println(number);
	}	
	public final static void main(String[] args)
	{
		new Main();
	}
}
```


----------



## Lord_Tribual (7. Februar 2009)

Ich danke euch beiden ... und ich muss zugeben, ich hatte die selbe Lösung, nur das ich nicht / 2 gerechnet habe ... deswegen auch die OutOfBounce ... super ... nun bin ich schlauer ... und ich kann weiter machen bei meinem Spiel  ... 
Also nochmals Danke !

Liebe Grüße,
Lord:Tribual


----------

