"Missing return statement" innerhalb der if / for / while
Ich habe eine Frage bezüglich return-Anweisungen innerhalb if()
while()
oder for()
Aussagen.
Wie Sie sehen können, in der folgenden Methode ist es erwartet, dass ich return
einen String-Wert.
Das problem ist, dass wenn ich zu return
- Anweisung innerhalb meiner if
Anweisungsblock, würde der compiler wieder den Fehler missing return statement
.
public String myMethod()
{
if(condition)
{
return x;
}
}
Natürlich könnte ich die Methode ändern header void
und verwenden System.out.println
statt return
. Aber ist das der richtige Weg, es zu tun? bin ich etwas fehlt?
Jede Hilfe wird sehr geschätzt.
- Was passiert, wenn die Bedingung nicht wahr ist? Was macht Ihre Methode Rendite in diesem Fall?
- Sie könnten wieder einen Standardwert (wie null), wenn der Wert nicht gefunden wird. Beim aufrufen der Methode, die Sie prüfen, ob der Wert gleich dem default-Wert und kann so prüfen, ob der zurückgegebene Wert weiter bearbeitet werden sollen.
- sollten Sie einen
return
Anweisung nach derif
oder in einemelse
- Anweisung - Jeder code-Pfad zurückkehren muss; hier ist nur die code-Pfad, der etwas zurückgibt, wenn
condition
wahr ist. - mögliche Duplikate von Missing return statement } in java-Fehler
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn du return-Anweisung in
if
,while
oderfor
Erklärung, dann kann es nicht Wert zurückgeben. Wenn es nicht drinnen, diese Aussage dann auch, dass die Methode sollte wieder etwas Wert ( das könnte null sein). Um zu gewährleisten, dass der compiler wird Sie zwingen, dies zu schreiben, return-Anweisung, die nachif
,while
oderfor
.Aber wenn Sie schreiben
if
/else
block, und jeder von Ihnen ist zurück in der es dann compiler weiß, dass entwederif
oderelse
erhalten, ausgeführt, und die Methode einen Wert zurückgeben. So auch dieses mal-compiler werden dich nicht zwingen.return
- Anweisung am Ende der Funktion/Methode.Das ist, weil die Funktion muss, um einen Wert zurückzugeben. Sich vorstellen, was passiert, wenn Sie ausführen
myMethod()
und es nicht insif(condition)
was wäre Ihre Funktion gibt? Der compiler muss wissen, was Sie zurück, in jeder möglichen Ausführung Ihrer FunktionÜberprüfung der Java-Dokumentation:
Können Sie tun, um Ihr problem zu lösen:
Versuchen mit, als wenn
if condition
gibt false zurück, so wird es leer zurück sonst nichts, um zurückzukehren.Weil der compiler nicht weiß, ob irgendwelche dieser wenn Blöcke jemals erreicht, so gibt es einen Fehler.
Ist illegal syntax. Es ist nicht eine optional Sache für Sie, um eine variable. Sie MUSS wieder eine variable des Typs geben Sie in Ihrer Methode.
Sind Sie effektiv sagen, ich verspreche jede Klasse kann diese Methode verwendet werden(public) und ich verspreche, es wird ja immer wieder eine Zeichenkette(String).
Dann werden Sie sagen, WENN meine Bedingung ist wahr, ich will wieder x. Gut, dass ist schade, es gibt keine, WENN es in Ihrem Versprechen. Du hast versprochen, dass myMethod wird IMMER ein String zurückgegeben werden. Auch wenn deine Bedingung ist IMMER wahr, hat der compiler davon ausgehen, dass es eine Möglichkeit gibt es, falsch zu sein. Somit haben Sie immer benötigen, um eine Rückkehr am Ende Ihres nicht-void-Methode außerhalb der Voraussetzungen NUR für den FALL, alle Ihre Bedingungen fehlschlagen.
Dies wird den string nur, wenn die Bedingung wahr ist.
null
sind immer SCHLECHTE zurück rufen Sie an !!!Müssen Sie fügen Sie eine return-Anweisung, wenn die
condition
ist falsch.FYI:
Oracle-docs für die return-Anweisung
Jeder, wie myMethod() sollte einen String-Wert .was geschieht, wenn die Bedingung falsch ist myMethod etwas zurückzugeben? vns ist keine, so dass Sie brauchen, um zu definieren return null oder einen string-Wert in falsche Bedingung