Problem bei Array Kopieren

Nabend,

ich bastell mir gerade eine Klasse in die ich eine Zahl pro „do while“ eingeben und ein array erstellt wird mit dem Wert der eingabe. Bei neuer Zahl soll die Länge des Array angepasst werden und der neue Wert auch mit rein. Dazu hab ich die Methode arraycopy erstellt und als return erwarte ich den neuen Array mit einer 0 quasi vorne dran. Aber er kommt nicht zurück wieso!?!?

Code:

/**
* Beschreiben Sie hier die Klasse Aufgabe1.
*
* @author Marcus Müller
* @version 23.11.2007
*
*/
public class Aufgabe1
{
public static void main (String[]args) {

int a = 1;
int x = -1;
int[] array = new int[2];
do{
System.out.print("\nBitte geben Sie eine Zahl ein :");
a = Eingabe.readInt();

x = x + 1;
System.out.print("\n x ist ="+x);
if(x>0){
//Array Copy
arraycopy(array);
//Array Def
System.out.print("\n Der Array ist so lang: „+array.length);
System.out.print(“\n Array Inhalt 2:"+ArrayUtils.ausgeben(array));
array[x]=a;
}
else
{
array[x]=a;
}
;

System.out.print(ArrayUtils.ausgeben(array));

}while (a>=0);

System.out.print("\nEnde");
}

//Modul - Array Kopieren
public static int[] arraycopy(int[] array)
{
int[] puffer = new int[array.length];
for(int i=0;i

hallo

das ganze klingt ja stark nach einer hausaufgabe - sonst gibt es keinen grund, das auf diese weise zu lösen…

aber zu deinem problem: die arraycopy-methode kopiert den array in einen neuen, gibt diesen auch zurück. nur auf die aufrufende methode tut nichts mit dem returnwert und arbeitet brav mit dem original-array weiter. und der hat sich ja nicht geändert.

in der aufrufenden methode musst du also:

array = arraycopy (array);

schreiben.

ach übrigens: wieso kopierst du den array zuerst in einen puffer und dann in einen weiteren array? ausser, dass du die doppelte menge speicher brauchst und dein programm doppelt so langsam wird, hat das keinen effekt.

zur erklärung: ein array ist auch nur ein objekt. die array-variable hält nur die referenz auf das objekt, nicht den array selbst. übergibst du den array einer methode, übergibst du in wirklichkeit nur den objektpointer in einer lokalen variable. ein neues array-objekt zu erzeugen und dieser lokalen variable zuzuweisen, ändert nichts an dem ursprünglichen array-objekt und dem objektpointer der aufrufenden methode.

lg
erwin