return

wee witch

Mitglied
Hallo,

ich hoffe ihr könnt mir hier helfen :)
Ich bin grad dabei Java zu lernen und komme mit den Erklärungen in meinem Buch net ganz so zurecht.

Ich arbeite mich grade durch die Methoden, die ich gut verstehe und returns, die ich nicht so ganz verstehe.
Es steht ständig im Buch return gibt einen Wert zurück. Wohin zurück? Ich schreibe die Beispiel-Codes aus dem Buch immer ab, um es besser zu verstehen und es mir einzuprägen, aber bei return-anweisungen häng ich.

zb. in der methode Rational

Java:
class Rational
{
.....

double getReal()
{
     return ((double)num)/denom;
}
...
void output()
{
System.out.println(getReal());
}
}

wozu so kompliziert? ich könnte doch auch einfach im hauptprogramm schreiben:

Java:
double ergebnis = ((double)num) /denom;
System.out.println(ergebnis);

mir fehlt einfach der sinn hinter dem return-befehl.
ich hoffe, mir kann das jemand erklären. :)

lg
wee witch
 

Sonecc

Gesperrter Benutzer
Du stellst da grade nicht return in Frage, sondern Methoden an sich.
Durch Methoden kannst du bestimmte Funktionen an mehreren Stellen deines Programmes nutzen.
Statt sie dann jedes mal neu schreiben zu müssen, rufst du einfach deine Methode auf und hast damit arbeit gespart.

Was dein Problem mit return betrifft.
Return gibt dem Aufrufer die entsprechenden Daten.
In deinem Fall erhält also System.out.println() das Ergebnis von getReal()


Klasse, nicht Methode
 

Jango

Gesperrter Benutzer
Return gibt immer einen Wert zurück, den der Aufrufer erwartet und verarbeitet.
Man kann eine Methode auch aufrufen ohne einen return-wert - nur halt, um irgendwas zu machen, was später nicht mehr relevant ist.
Return bedeutet auch das Ende einer Methode.
 
Ich kann mich Sonecc nur anschließen, das Beispiel, das du hast ist natürlich nur exemplarisch und an dieser Stelle ist eine Methode mit Rückgabewert nicht unbedingt nötig oder sinnvoll. Aber bei größeren, komplexeren Projekten werden die Rückgabewerte essentiell und kannst und willst nicht mehr darauf verzichten.

Es steht ständig im Buch return gibt einen Wert zurück. Wohin zurück?
immer an die Stelle deines Programms, an der du die Methode aufgerufen hast.
 

wee witch

Mitglied
ja, ich versteh euch schon. mein problem ist eher:

wozu der returnbefehl, wenn es doch durch das

void output() eh schon da steht.

ist das nicht doppelt-gemoppelt?
 
Z

Zacherl

Gast
Naja, du kannst ja innerhalb der Methode wieder verzweigen (mit einer if-else-Anweisung) und dann beispielsweise im einen Fall Wert A zurückgeben und im anderen Wert B. Das return kennzeichnet also gleichzeitig den Ausstiegspunkt der Methode und die Variable oder Konstante, welche hinter dem Wert steht, wird zurückgegeben.

Falls es eine Funktion ohne Rückgabewert ist (also void), so wird return nur zum vorzeitigen Verlassen der Methode verwendet, sprich der folgende Code wird nicht ausgeführt, und keine Variable/Konstante dahinter gestellt (-> einfach nur "return;").

Beispiel:

Java:
void tuwas() {
    if (dastimmtwasnicht) return; //abbrechen
    else {
          ...
    }
}
 

wee witch

Mitglied
jo, aber wenn ich mir das ergebnis anzeigen lassen will, brauch ich so oder so einen output. macht das, das return nicht überflüssig? weil return gibt ja nur dem programm einen wert, der dann halt da ist, aber mehr auch nicht.
 
T

Tomate_Salat

Gast
In den meisten fällen, willst du das Ergebnis aber nicht ausgeben, sondern übergibst einfach nur eine zwischenlösung oder private Elemente.
 
Zuletzt bearbeitet von einem Moderator:
Z

Zacherl

Gast
Was verstehst du unter Output? Die Sache ist doch die, du musst in der Funktion irgendwie sagen, was sie zurückgeben soll, wenn sie nicht gerade void als Rückgabetyp hat - und wie willst du das ohne return machen? Dafür ist das gerade da.

Edit: Jap, das mit dem Output habe ich missverstanden - aber nimm einfach mal an, du willst eine Funktion zur Berechnung eines Wertes benutzen. Die Ausgabe kannst du aber auf verschiedenen Wegen realisieren, beispielsweise kannst du das in eine Datei schreiben oder auf die Konsole oder... und der Punkt ist: Wenn du die Funktion nutzt, die den Wert zurückgibt, dann kannst du die gleiche Funktion für jedes Ausgabemedium benutzen, obs jetzt die Konsole oder ne Datei ist, und brauchst das nicht immer neu zu schreiben.
 

wee witch

Mitglied
ich fange langsam an zu begreifen, ich glaube ich habe mich am buchbeispiel einfach festgefahren gedanklich.
hast du vielleicht ein ganz kurzes code-beispiel für mich? ich tu mir ansich leichter wenn ich es sehe. nur im buch, mit dem ich arbeite, ist sein 30 seiten ein und das selbe beispiel an dem rumgeprockelt wird... ich steig da nimma durch.^^
 

wee witch

Mitglied
jaja, verstehe.. warum einfach, wenns auch kompliziert geht^^

mir ist klar, dass return sinn macht, nur da ich grad wirklich arg auf dem schlauch stehe, fehlt mir die erkenntnis des sinns^^
 
T

Tomate_Salat

Gast
Java:
public class DemoExampel
{
	private	int	   call;
	private String id;
	
	public DemoExampel(String elementId)
	{
		id	= elementId;
		call= 1;
	}
	
	/**
	 * Gibt true zurück bei erfolgreicher wertübername
	 * 
	 * @param newCall
	 * @return
	 */
	public boolean setCall(int newCall)
	{
		if(newCall == 0)
			return false;

		call  = newCall;
		
		return true;
	}
	
	private String getElementId()
	{
		return id;
	}
	
	public boolean compareId(String otherId)
	{
		return id.equals(otherId);
	}
}

Hier hast du ein paar gängige Beispiele:
  • return-wert verwenden um anzugeben, ob eine wertänderung erfolgreich war(setCall) [+Extra: den zu setzenden wert erst überprüfen, bevor er gespeichert wird]
  • Um nur Lese-Zugriff auf ein Element zu bekommen (getElementId (wird hier im konstruktor gestzt))
  • um zu prüfen, ob werte übereinstimmen(compareId)

MFG

Tomate_Salat
 
Zuletzt bearbeitet von einem Moderator:
Z

Zacherl

Gast
Okay, dann was einfaches:

Java:
public class Return {
	
	public static void main(String[] args) {
		System.out.println(hello()); //Ausgabe auf die Standard-Konsole
		System.err.println(hello()); //Ausgabe auf die Error-Konsole
		
		//Alternative:
		String resultA;
		//Hier muss jetzt einmal das Komplizierte gemacht werden.
		resultA = "Hello World";
		System.out.println(resultA);
		
		String resultB;
		//Hier muss das Komplizierte nochmal gemacht werden.
		resultB = "Hello World";
		System.err.println(resultB);
	}
	
	public static String hello() {
		//Hier könnte auch was viiiiieeeeeeeel Komplizierteres stehen,
		//das den Return-Wert - das "Hello World" - zusammensetzt.
		return "Hello World";
	}
	
}

Hier erscheint dir das vielleicht wieder überflüssig, weil man für die Alternative einfach resultA für beides nehmen könnte (steht ja direkt hintereinander).

Aber jetzt stell dir mal vor, du befindest dich an ner total anderen Stelle von deinem Programm (z. B. du hast nen Editor, bei der einen Sache willst du den im Editor gerade bearbeiteten Text zur Anzeige auf den Bildschirm übertragen, bei der anderen Sache willst das in eine Datei abspeichern) - wie du an den Text kommst, dafür kannst du eine Methode nutzen, die den Text über "return" zurückgibt und die du sowohl für das Speichern als auch für die Bildschirmausgabe verwendest; du musst später also nur den Teil neu programmieren, der zur Ausgabe (auf den Schirm/in die Datei) verwendet wird und der sich unterscheidet.
 

StrikeTom

Bekanntes Mitglied
Java:
public class Klasse
{
     private String string;
     public Klasse(String string)
     {
           this.string = string;
     }
     public String getString()
     {
           return string;
     }
     public void setString(String string)
     {
           this.string = string;
     }
public static void main(String[]args)
{
    Klasse klasse = new Klasse("String1");
    System.out.println(klasse.getString());
    Klasse.setString("String2");
    String sinnlos = klasse.getString();
    System.out.println(sinnlos);
}
}
Verdeutlichung von return
 

wee witch

Mitglied
setCall und isId verstehe ich gut. danke schön,

was mir jetzt noch net klar ist, wie kann ich mir das dann anzeigen lassen? println(return) wird ja nicht funzen.

ich weiß, in komplexen programmen geht es nicht darum, sich jeden fuzzel ausgeben zu lassen, aber ich bin halt wirklich noch sehr am anfang und kontrolliere so was ich da zusammengetippselt habe.
 

wee witch

Mitglied
@ StrikeTom : Danke, bissi viele String aber ich denke ich habs.^^
@ Zacherl: Tausend Dank, bei deinem Code is grad der Knoten im Schlach geplatzt!!!! Mein Tag wird wieder schön ;)
 

Landei

Top Contributor
Wobei dein Schlauch nicht ganz von der Hand zu weisen ist: In vielen Sprachen wird einfach der letzte Wert in der Methode zurückgegeben (manchmal hat man trotzdem ein return, um die Methode in der Mitte beenden zu können), was ja auch ein sinnvolles "Default-Verhalten" ist. Java erfordert allerdings immer ein return, es sei denn die Methode gibt nichts zurück (void).

Methoden sind prinzipell dazu da, die Arbeit in die kleinsten logisch sinnvollen Bestandteile aufteilen zu können, einfach weil sich dadurch alles einfacher nach Bedarf "zusammenstecken" läßt. Etwas zu berechnen und etwas auf der Konsole auszugeben sind bereits zwei Aufgaben, also sollte das auch in zwei Methoden aufgeteilt werden: Was nützt dir z.B. eine Quadratfunktion, die ihr Ergebnis auf der Konsole ausgibt, wenn du sie eigentlich für die Berechnung der Distanz (wurzel(quadrat(abstandX) + quadrat(abstandY)) benötigst?

Man kann diese "Aufgabenverteilung" in verschiedene Methoden auch als Unterfall des Separation of Concerns-Prinzips ansehen.
 

Marco13

Top Contributor
Jetzt sowas wie Rekursion zu erwähnen würde wohl bestenfalls zur "Akzeptanz", aber nicht unbedingt zum Verständnis beitragen :D Aber vielleicht ist ja weder ersteres noch letzteres überhaupt noch notwendig.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiMa Java Doc mehrere Return Parameter Java Basics - Anfänger-Themen 11
G Return in While Schleife Java Basics - Anfänger-Themen 6
J Rekursive Funktion und return statement Java Basics - Anfänger-Themen 3
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
M Warum return die Methode den Wert nicht Java Basics - Anfänger-Themen 5
S Methoden Return Rückgabewert wird nicht übergeben Java Basics - Anfänger-Themen 8
schredder Strings und reguläre Ausdrücke - Methode mit return string.matches Java Basics - Anfänger-Themen 5
I Return Array Java Basics - Anfänger-Themen 4
Q return Ausgabe Java Basics - Anfänger-Themen 4
javapingu Variablenwerte ändern ohne return Statement? Java Basics - Anfänger-Themen 7
C Ausgabe boolean return ((n==9)||(n==0)); Java Basics - Anfänger-Themen 13
G return 1 + methode Java Basics - Anfänger-Themen 4
H Methode mit Array als Rückgabe This method must return a result of Type int[] Java Basics - Anfänger-Themen 2
JD_1998 Hilfsmethode if return funktioniert nicht Java Basics - Anfänger-Themen 2
J Missing Return Statement Java Basics - Anfänger-Themen 11
T Return einer anderen Methode herausfinden Java Basics - Anfänger-Themen 9
C ArrayList mit return zurückgeben Java Basics - Anfänger-Themen 13
M kann man return in nur einer Methode einsetzen? Java Basics - Anfänger-Themen 7
V return String[] führt zu [Ljava.lang.String;@50675690 Java Basics - Anfänger-Themen 7
K Return in Schleife Java Basics - Anfänger-Themen 4
B Statische Methode return funktioniert nicht. Java Basics - Anfänger-Themen 19
S Missing return Java Basics - Anfänger-Themen 4
das_leon return message Java Basics - Anfänger-Themen 2
C return kann nicht auf variable zugreifen Java Basics - Anfänger-Themen 26
N Ausführung gibt keinen Fehler an, Return wird aber nicht ausgegeben Java Basics - Anfänger-Themen 22
R return: cannot find symbol Java Basics - Anfänger-Themen 2
R Ratespiel mit Return und einer Eingabe Java Basics - Anfänger-Themen 1
Z Return in While-Schleife Java Basics - Anfänger-Themen 7
N Frage zu this, super und return Java Basics - Anfänger-Themen 13
K ArrayList ausgeben mit return Java Basics - Anfänger-Themen 6
M Return statement Java Basics - Anfänger-Themen 4
J-Gallus Ein Getter bekommt eine anderen Type als er Return soll Java Basics - Anfänger-Themen 9
J Variablen Komsiche System.in.read() return-value? Java Basics - Anfänger-Themen 3
M Abbrechen Methode ohne return Java Basics - Anfänger-Themen 3
M Methoden Datei einlesen und als return übergeben. Java Basics - Anfänger-Themen 8
L OOP Return Java Basics - Anfänger-Themen 10
L Erste Schritte Frage zu 'return' Java Basics - Anfänger-Themen 4
J Methoden Rekursive Return Methode Java Basics - Anfänger-Themen 2
W Return statement in Methode nur bei if-clause Java Basics - Anfänger-Themen 3
D Methoden Return-Wert wird nicht ausgegeben Java Basics - Anfänger-Themen 3
F Return-Anweisung Java Basics - Anfänger-Themen 2
E Erste Schritte <? super Unterklasse> Return-Typ darf nicht vom Wildcard-Typ sein Java Basics - Anfänger-Themen 5
B OOP Methode mit Array mit return verlassen Java Basics - Anfänger-Themen 8
J Grundsätzliche Frage zu return Types in Methoden Java Basics - Anfänger-Themen 6
G return-wert für eine Methode Java Basics - Anfänger-Themen 1
B Methoden Probleme mit for Schleife und return Java Basics - Anfänger-Themen 5
Q Tastatureingabe direkt nach Eingabe (ohne zwischenzeitliches "Return" o.Ä ) weiterverwenden Java Basics - Anfänger-Themen 1
B Variablen Problem mit return String[] Java Basics - Anfänger-Themen 4
O Per return Run Methode beenden Java Basics - Anfänger-Themen 3
M Arrays als return Value? Java Basics - Anfänger-Themen 2
C Return statement Java Basics - Anfänger-Themen 10
T Boolean Missing return Statement?! Java Basics - Anfänger-Themen 2
Z Methoden return nullprüfung Java Basics - Anfänger-Themen 7
O Java return in Schleife Java Basics - Anfänger-Themen 4
K Was macht hier genau return? Java Basics - Anfänger-Themen 2
G Methoden Was bedeutet return in einer Methode Java Basics - Anfänger-Themen 5
Y Warum void statt Datentyp + return Java Basics - Anfänger-Themen 4
K Variablen RETURN in Case-Switch / This method must return a result of type Item Java Basics - Anfänger-Themen 4
K Erste Schritte "return" Problem bei Rekursion Java Basics - Anfänger-Themen 8
R If Verschachtelung und return; Java Basics - Anfänger-Themen 4
M Frage zum return; Befehl Java Basics - Anfänger-Themen 1
S try-catch - Variablen werden nicht an return übergeben Java Basics - Anfänger-Themen 3
C Einige Anfängerfragen (Return-Wert, Exception...) Java Basics - Anfänger-Themen 11
S Methoden Return Java Basics - Anfänger-Themen 8
T return-Wert verwenden? Java Basics - Anfänger-Themen 12
T Return eines Int-Werts? Java Basics - Anfänger-Themen 3
W return-Anweisung gibt nichts aus Java Basics - Anfänger-Themen 5
R Return in If Java Basics - Anfänger-Themen 10
S Methoden Return Anweisung beendet Methode nicht, stattdessen wird diese zweimal durchlaufen Java Basics - Anfänger-Themen 3
G array return methode Java Basics - Anfänger-Themen 10
L return wird nicht erkannt? Java Basics - Anfänger-Themen 3
J Regex mit Return Java Basics - Anfänger-Themen 3
M Variablen return-array klonen Java Basics - Anfänger-Themen 3
A Methode mit Array als Param --> return Array --> Fehler Java Basics - Anfänger-Themen 3
S Zeichen einlesen ohne Return? Java Basics - Anfänger-Themen 19
P Compiler-Fehler Boolean: Missing Return Statement Java Basics - Anfänger-Themen 4
S probleme mit der return anweisung Java Basics - Anfänger-Themen 20
E Warum wird Methode nicht durch return-Befehl beendet? Java Basics - Anfänger-Themen 3
V Erste Schritte Return ohne Argument Java Basics - Anfänger-Themen 6
I Methoden Missing return statement; Intervallschachtellung Java Basics - Anfänger-Themen 12
S Frage zu Vererbung und return. Java Basics - Anfänger-Themen 4
R return (mehrere floats) Java Basics - Anfänger-Themen 11
E Return String Java Basics - Anfänger-Themen 10
P Methoden Methode ohne return abbrechen? Java Basics - Anfänger-Themen 12
I Return Befehl in Methode Java Basics - Anfänger-Themen 13
M Problem mit boolean. Return nicht erkannt Java Basics - Anfänger-Themen 10
P Return aus For-Schleife Java Basics - Anfänger-Themen 19
S return in GUI ? Java Basics - Anfänger-Themen 12
M This method must return a result of type int Java Basics - Anfänger-Themen 13
F Erste Schritte return (char)toUnsignedInt(value) Java Basics - Anfänger-Themen 2
A Falscher Return-Wert Java Basics - Anfänger-Themen 2
M missing return statement?! Java Basics - Anfänger-Themen 4
L Return Fragen Java Basics - Anfänger-Themen 4
R Nach return() der aufgerufenen Methode wird aufrufende Methode nicht weiter ausgeführt Java Basics - Anfänger-Themen 14
I Null als return obwohl datensatz existiert Java Basics - Anfänger-Themen 12
S this method must return a result of type double Java Basics - Anfänger-Themen 2
V Problem mit return Java Basics - Anfänger-Themen 7
K Return Problem Java Basics - Anfänger-Themen 3
M Fragen zu Methoden (void/return), Übergabe von Parametern Java Basics - Anfänger-Themen 3
M Objekto.Programm. Return-Befehl Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben