# Array verlängern



## wa213 (6. Jun 2012)

hallo, ich bin blutiger Anfänger wie ihr sehehn werdet. 

ich habe hier eine Methode geschrieben um ein int Array zu verlängern


```
public static int[] verlaengern(int einArray[],int a) {
		int[] hilfe;
		hilfe = new int[einArray.length+1];
		for (int i=0;i<einArray.length;i++) {
			hilfe[i]=einArray[i];
			}
		hilfe[einArray.length]=a;
		einArray=hilfe;
		return einArray;
		}
```

ich bekomme keinen Fehler, aber mein Array bleibt unverändert, wo ist mein Fehler?

Vielen Dank

lg


----------



## XHelp (6. Jun 2012)

Beim nächsten mal: poste den Fehler und auch die Zeilenangaben.
Zu deinem Fehler: in Zeile 7 fehlt ein 
	
	
	
	





```
-1
```

P.S. Warum nicht gleich 
	
	
	
	





```
return hilfe
```
?


----------



## wa213 (6. Jun 2012)

das ist kein fehler auds meiner sicht, a soll ja hinten an einArray angehängt werden, warum also -1 und wie gesagt eclipse zeigt hier auch keinen  Fehler, daher konnte ich ihn nicht angeben.

zu zweitens :ich möchte ja dass mein Array ersetzt wird, brauch ich die letzte Zeile trotzdem nicht?

lg


----------



## XHelp (6. Jun 2012)

Beim ausführen wird dir eine ArrayIndexOutOfBoundsException geschmissen.
-1 musst du auch nicht beim a machen:
[JAVA=7]hilfe[einArray.length-1]=a;[/code]
Und durch die Zuweisung in der vorletzten Zeile ersetzt du das ursprüngliche Array nicht.


----------



## Landei (6. Jun 2012)

wa213 hat gesagt.:


> das ist kein fehler auds meiner sicht...




Deine Sicht ist hier leider irrelevant, es zählt die Sicht der JVM, und für die ist es ein Fehler.

Das erste Feld eines Arrays hat den Index 
	
	
	
	





```
0
```
 und das letzte dementsprechend den Index 
	
	
	
	





```
array.length-1
```
. Isso.


----------



## Nardian (6. Jun 2012)

Hi!

```
int[] oldArray;
int[] newArray = new int[newLength];
System.arraycopy(oldArray, 0, newArray, 0, oldArray.length);
// neues Element einfügen
// eventuell oldArray-Referenz mit neuer Referenz überschreiben (einfaches oldArray = newArray; )
```
Bye!


----------



## Spacerat (6. Jun 2012)

Das ist kein Fehler, da hat der TO schon recht. "hilfe" ist um sin Element länger als "einArray", deswegen passt "einArray.length". Isso.
@TO: Darf man fragen, wie du die Methode aufrufst? Du must das zurückgegebene Array nämlich auch zuweisen, sonst verschwindet es im Hades.


----------



## Milo (6. Jun 2012)

Hi,

da aber zu beginn das Array um ein Feld größer initialisiert wird:


```
hilfe = new int[einArray.length+1];
```

ist der Zugriff aufs letzte Element korrekt durch


```
hilfe[einArray.length]=a;
```

wahlweise aber auch durch


```
hilfe[hilfe.length-1]=a;
```

Der Code von wa213 dürfte funktionieren.

Gruß Micha


----------



## wa213 (6. Jun 2012)

also ich hab da eine methode ausgabe

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

und in main hab ich dannnur :


```
verlaengern(einArray,6);
		ausgabe(einArray);
```


vielen Dank für eure HIlfe


----------



## Milo (6. Jun 2012)

Hallo,

in Deiner Methode wird das Array auch größer aber Du musst es auch wieder zuweisen, wie Spacerat schon schrieb:


```
einArray = verlaengern(einArray,6);
```

Gruß Micha


----------



## wa213 (6. Jun 2012)

danke hab meinen Fehler es muss natürlich ausgabe(verlaengern(einArray,6)); heißen


----------

