Kann ich eine return-Anweisung innerhalb einer switch-Anweisung?
Darf ich eine switch
Aussage, die entscheidet, was zurück? Zum Beispiel, ich möchte etwas zurückgeben unterschiedlich basierend auf, was mein Zufallsgenerator zu kommen. Eclipse gibt mir einen Fehler, will mich um die return
- Anweisung außerhalb der switch
.
Mein code:
public String wordBank() { //Error here saying: "This method must return a type of string"
String[] wordsShapes = new String[10];
wordsShapes[1] = "square";
wordsShapes[2] = "circle";
wordsShapes[3] = "cone";
wordsShapes[4] = "prisim";
wordsShapes[5] = "cube";
wordsShapes[6] = "cylinder";
wordsShapes[7] = "triangle";
wordsShapes[8] = "star";
wordsShapes[9] = "moon";
wordsShapes[10] = "paralellogram";
Random rand = new Random();
int i = rand.nextInt(11);
if (i == 0) {
i = rand.nextInt(11);
}
switch (i) {
case 1:
return wordsShapes[1].toString();
case 2:
return wordsShapes[2].toString();
case 3:
return wordsShapes[3].toString();
case 4:
return wordsShapes[4].toString();
case 5:
return wordsShapes[5].toString();
case 6:
return wordsShapes[6].toString();
case 7:
return wordsShapes[7].toString();
case 8:
return wordsShapes[8].toString();
case 9:
return wordsShapes[9].toString();
case 10:
return wordsShapes[10].toString();
}
}
- Mögliche Duplikate von Switch-Anweisung mit Retouren-Codes auf Richtigkeit
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sorry, aber in diesem Fall, warum nicht einfach das machen:
Diese Weise können Sie vermeiden, die Schalter und alle.
Hoffe, das hilft,
Können Sie setzen
return
innenswitch
aber Sie brauchen nicht zu verwendenswitch
in diesem Fall.Das problem ist nicht, dass Sie return-Anweisungen innerhalb der
switch
Aussage, die sind gut, aber Sie haben keine Rückkehr nach wird die switch-Anweisung. Wenn Ihr switch-Anweisung abgeschlossen ist, ohne Rückgabe, was wird jetzt geschehen?Die Regeln von Java erfordert, dass alle Pfade durch eine Wert-Rückkehr-Funktion auch eine
return
- Anweisung. In Ihrem Fall, obwohl Sie wissen um den Wert voni
wird immer einen Wert, der bewirkt, dass einreturn
vom Schalter, der Java-compiler ist nicht schlau genug, um festzustellen, dass.(AUßER: übrigens, du hast nicht wirklich verhindern, dass der Wert 0 erzeugt wird; vielleicht ist Ihr
if
sollte einwhile
.)NACHTRAG: falls es Sie interessiert, hier ist eine Umsetzung. Sehen http://ideone.com/IpIwis für das live-Beispiel.
Beachten Sie die best practice, die random number generator definiert außerhalb der Funktion.
else if
wie die Aussage, die ich verwenden soll, oder einfach nurreturn null
?default
Fall in Java. Jedoch, siehe Ramon Antwort für das, was Sie sollte zu tun. 🙂Der return-Anweisung zurück, von der ganzen Funktion, in der es verwendet wird.Also ich denke, es ist gut, dass keine andere nützliche code-Zeilen werden muss, gibt es unten den Schalter, wenn Sie möchten, verwenden Sie die return-Anweisung in den switch.