PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Void, return



Nichtunkreativ
25-09-2010, 11:53
static void sub(int n1, int n2, int i)
{
i=(n1-n2);
Der Wert i kann das Programm irgendwie nicht speichern. Ich weiss, man könnte das void einfach weglassen und eine return Funktion einbauen. Mich würde aber trotzdem interessieren, ob es bei Java eine "Zeiger auf i-Funktion" gibt? Soviel ich weiss würde dies beispielsweise bei C mit einem * funktionieren.
Danke vielmals!

anda_skoa
25-09-2010, 17:15
Wenn du einen Input/Output Parameter haben willst, musst du einen Referenztyp nehmen.

Für diese Beispiel z.B java.lang.Integer

Ciao,
_

John W
25-09-2010, 18:05
@anda_skoa, ich mag dir ja nicht auf die Füße treten, aber einen Integer kann man nicht ändern - man muss dann eine neue Instanz zuweisen, damit lässt sich i selbst aber nicht ändern.

Die Lösung wäre, ein Array als Zwischenspeicher zu verwenden (das wäre das, was anda_skoa über eine Integer-Instanz versucht):


static void sub(int n1, int n2, int[] i)
{
i[0]=(n1-n2);
}
Der Aufruf sähe z.B. so aus:


int i = 3;
int[] a = {i};
sub(5, 3, a);
i=a[0];
System.out.println(i);

Nichtunkreativ
26-09-2010, 13:18
Vielen Dank für deine Antwort, hat super geklappt, doch eine Frage hätte ich trotzdem noch: Was passiert genau durch die Eingabe der folgenden Zeile?

int[] a = {i};

John W
26-09-2010, 13:25
Es wird ein int-Array erstellt, das nur den Wert von i enthält; die Arraygröße ist somit immer 1 und kann ausgetauscht werden, es wird also nur als Container genutzt.

anda_skoa
26-09-2010, 14:27
@anda_skoa, ich mag dir ja nicht auf die Füße treten, aber einen Integer kann man nicht ändern - man muss dann eine neue Instanz zuweisen, damit lässt sich i selbst aber nicht ändern.


Du hast natürlich recht. Sieht man wieder wie lange ich schon kein Java mehr benutzt habe :)

Ciao,
_

Nichtunkreativ
26-09-2010, 20:03
Danke vielmals!