Folgendes Problem:
Mein Programm sieht so aus (sehr grob ^^):
x(INT_Array);
y(INT_Array);
static void x(int [] INT_Array)
static void y(int [] INT_Array)
Ich übergebe also ein Array mit 4 Werten an Funktionen welche mir etwas ausrechnen - sie geben nur etwas aus nichts zurück (void).
Wenn ich jetzt vor und nach dem Aufruf von "x" mir "INT_Array[0]" ausgeben lasse kommt jedesmal etwas anderes raus --> somit arbeitet "y" mit falschen Werten!
Was mache ich da falsch) Warum ändern sich die Werte im Array welches ich immer übergeben möchte?
Gruß, PingOfDeath
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
Anscheinend änderst du unbeabsichtigt den wert von "INT_Array[0]" in der methode "x()".
"INT_Array" ist zwar nur eine kopie des übergebenen arrays, aber eben nur die kopie des array-objekts, d.h. der referenz, sodass diese auf die selben inhalte verweisen.
mr.escape
"kopie des array-objekts, d.h. der referenz"
In der Funktion "x()" wird das Array durchaus umgeschrieben....
Wie muss ich es denn umschreiben das ich wirklich ein komplett neues Array erhalte welches nicht mehr im Bezug auf das zu übergebende Array steht?
Gruß, PingOfDeath
Wenn das komplette Array überschrieben wird wird wäre es am einfachsten (und schnellsten), wenn Du in der Funktion einfach ein neues Array gleicher größe erstellst und nur noch in dieses schreibst ;-)
Ansonsten kannst Du mit INT_Array.clone() eine Kopie des Arrays erstellen.
Gruß
Borlander
Du musst ein "deep-copy" erzeugen. Z.b.:
static void x(int [] INT_Array0){
int[] INT_Array=INT_Array0.clone();
...
mr.escape
Danke Euch ;-)
Funktioniert wie gewünscht.
Gruß, PingOfDeath