Hi,
ich würde gerne eine simple Methode (ohne Rückgabewert) haben, die einen eingegeben int-Array um ein Element erweitert und dort einen Wert hinzufügt.
Dies wollte ich so realisieren:
Und ich versteh nicht warum das nicht klappt. (Der Array den ich dort übergebe ist danach einfach leer, bzw der Zeiger zeigt auf nichtsmehr).
Wenn ich nur eine Prozedur habe die z.B. das letzte Element des Arrays auf 0 setzt, das klappt.
z.B.:
Da gibts dann in der main keine Probleme, und der dort deklarierte und initialisierte Array a hat sich verändert.
Offensichtlich versteh ich nicht ganz wie call by reference hier funktioniert. Bzw wie ich den Array a in meiner main-methode dazu bringen kann nach Aufruf der Methode addArray auf den Inhalt des in addArray deklarierten Arrays b zu schauen.
Ich hoffe ich hab mich verständlich ausgedrückt und mir kann jemand erklären wie ich das realisieren kann und besser verstehe wie Arrays funktionieren. Ich habe diese Sache problemlos realisiert wenn addArray als Rückgabewert den neuen Array hat, und frage mich, obs auch ohne geht.
Also der Kern meiner Frage ist, wenn ich einen Array in einer void Methode verändere, was sind die Bedingungen, dass sich der übergebene Array aus der mainmethode ändert und nach der Zeile des Aufrufs dort intakt, bearbeitet und aufrufbar ist und warum erfülle ich diese Bedingung in meiner Methode nicht.
ich würde gerne eine simple Methode (ohne Rückgabewert) haben, die einen eingegeben int-Array um ein Element erweitert und dort einen Wert hinzufügt.
Dies wollte ich so realisieren:
Java:
static void addArray(int [] a, int z) {
int [] b = Arrays.copyOf(a, a.length+1);
b[a.length+1]=z;
a=b;
}
Wenn ich nur eine Prozedur habe die z.B. das letzte Element des Arrays auf 0 setzt, das klappt.
z.B.:
Java:
static void changelastArray(int [] a, int z) {
a[a.length-1]=z;
}
Offensichtlich versteh ich nicht ganz wie call by reference hier funktioniert. Bzw wie ich den Array a in meiner main-methode dazu bringen kann nach Aufruf der Methode addArray auf den Inhalt des in addArray deklarierten Arrays b zu schauen.
Ich hoffe ich hab mich verständlich ausgedrückt und mir kann jemand erklären wie ich das realisieren kann und besser verstehe wie Arrays funktionieren. Ich habe diese Sache problemlos realisiert wenn addArray als Rückgabewert den neuen Array hat, und frage mich, obs auch ohne geht.
Also der Kern meiner Frage ist, wenn ich einen Array in einer void Methode verändere, was sind die Bedingungen, dass sich der übergebene Array aus der mainmethode ändert und nach der Zeile des Aufrufs dort intakt, bearbeitet und aufrufbar ist und warum erfülle ich diese Bedingung in meiner Methode nicht.