PDA

View Full Version : [Frage] Arrayübergabe


finyfunny
05-06-2003, 18:31
kleine frage ... wie kann man eigentlich ein array an eine methode übergeben?:D
frag mich schon länger aber habs bis jetzt noch nicht herausbekommen.


danke im voraus.....:thumb:

lg finyfunny

lj_scampo
05-06-2003, 18:52
int i[] = new int[2];
i[0] = 0;
i[1] = 1;
String s[] = new String[] {"aa", "bb"};
meth(i, s);

private void meth (int[] intArr, String[] strArr) { ... }

finyfunny
05-06-2003, 19:03
@ lj_scampo danke.....

eins noch wie kann ich ne methode schreiben die ein array zurückliefert?
:D

lg finyfunny

lj_scampo
05-06-2003, 19:06
wieder auf die selbe art:

private int[] meth1() { return new int[2]; }

private String[] meth2() { return new String[] {"a","b"}; }

(davor -post 2- habe ich den rueckgabewert der meth vergessen.. )

Ikaru
05-06-2003, 19:17
hab gleich noch eine Frage:
Kann man zwei oder mehre variablen returnen ?
z.B.: einen int und einen String Array ?

lj_scampo
05-06-2003, 19:24
@ikaru nein, aber du kannst dir ja eine klasse basteln, welche diese 2 - oder beliebig viele - objekte enthaelt.
z.B.
public class Bla {
public ReturnClass meth() {
ReturnClass rc = new ReturnClass();
rc.str[] = new String[] {"a", "b"};
rc.i = 5;
rc.sk = new SonsteineKlasse("blabliblo");
return rc;
}
}

public class ReturnClass {
public String str[];
public int i;
public SonsteineKlasse sk;
}

...
Bla bla = new Bla();
ReturnClass ret = bla.meth();
int i = ret.i;
String s = ret.str;
SonsteineKlasse sk = ret.sk;
allerdings sollte man nie direkt auf klassenvariablen zugreifen (habe das im bsp. nur der uebersichthalber gemacht), sondern immer get- und set-Methoden verwenden:
z.B. setI (int value) {i=value;} in der klasse ReturnClass

meth() gehoert logisch nicht private...

Shine
05-06-2003, 19:48
meth(i, s);

private meth (int[] intArr, String[] strArr) { ... }

muss dich leider korrigieren, aber die methode wie du sie oben stehen hast ist nicht ganz korrekt, es fehlt ja der Typ des Rückgabewertes, also zumindest ein "void", nur damit ma si net wundert, wenn's einen fehler ausspuckt

mfg Shine

lj_scampo
05-06-2003, 19:58
ja, danke. hatte ich aber eh schon im post 4 angemerkt ;) (habs jetzt aber explizit ausgebessert)
aber diese codes sind alle "blind" geschrieben - sprich ohne versuch sie zu kompilieren. es kann also schon den einen oder anderen syntaxfehler geben... die grundidee sollte aber stimmen

leviathan
05-06-2003, 20:02
wieder auf die selbe art:

private int[] meth1() { return new int[2]; }

private String[] meth2() { return new String[] {"a","b"}; }

(davor -post 2- habe ich den rueckgabewert der meth vergessen.. )

Kann man dann einfach schreiben:

public static void main .....
{ int[] übergeben = new int[2];
übergeben = meth1()
}

geht das so oder wie muß die aussehen?
lg leviathan

lj_scampo
05-06-2003, 20:12
einfach

...
int[] uebergeben = meth1();
// jetzt ist uebergeben[0] = 0, uebergeben[1]=1 usw. bis 11 mit untiger meth1()
...


(ich bin mir nicht sicher, ob java umlaute mag)

die initialisation kann man sich sparen, da diese in der methode meth1 geschieht.

ausserdem sollte in der methode selbst logisch mehr geschehen. z.B.

public int[] meth1() {
int ret = new int[12];
for (int i=0; i<ret.length; i++) ret[i] = i;
return ret;
}

leviathan
05-06-2003, 20:14
Achso geht das :hewa:
P.S.: Ich glaub auch dass JAVA keine Umlaute mag. Zumindest schreib ich nie welche.
thx leviathan

locutus
07-06-2003, 03:53
Wenn du der Methode Objekte als Parameter mitgiebst, dann kannst du diese Objekte in der Methode modifizieren und brauchst sie nicht mit return ausgeben. Das funktioniert jedoch nicht mit einfachen Datentypen.

Ikaru
07-06-2003, 12:41
:borg::cuss:= :borg::borg:

lj_scampo
07-06-2003, 12:59
tschuldigung, da hatte ich dich nicht richtig verstanden:
ich dachte, du brauchst einen weg, wie man mehrere vars/objekte returnt - also reine ausgangsvariablen ("Kann man zwei oder mehre variablen returnen"), nicht wie man ein-ausgangsvariablen realisiert.

locutus
07-06-2003, 23:15
tschuldigung, da hatte ich dich nicht richtig verstanden

Ich denke Du hast ihn schon richtig verstanden. Mit meinem Post wollte ich nur einen anderen Lösungsweg aufzeigen, aber der scheint ihm nicht gefallen zu haben. :traurig:

leviathan
07-06-2003, 23:22
sorry war falsch verstanden
lg leviathan

lj_scampo
08-06-2003, 11:09
ich dachte nur, ikaru ist mir boese, weil ich nicht geschrieben hatte, dass objekte als referenz uebergeben werden (dass sie also auch ausserhalb der methode veraendert werden, wenn man sie innerhalb aendert)...