Die Verwendung mehrerer return-Anweisungen in einer Methode
import javax.swing.JOptionPane;
public class Speler
{
public String naam;
public String aantalKeerGespeeld;
public String behaaldePunten;
public String spelersInfo;
public String setNaam(){
return naam = JOptionPane.showInputDialog("Hoe heet je?");
}
public String setAantalKeerGespeeld(){
return aantalKeerGespeeld = JOptionPane.showInputDialog("Hoe vaak heb je gespeeld?");
}
public String setBehaaldePunten(){
return behaaldePunten = JOptionPane.showInputDialog("Hoe veel punten heb je behaald?");
}
public String setSpelersInfo(){
**return naam = JOptionPane.showInputDialog("Hoe heet je?");
return aantalKeerGespeeld = JOptionPane.showInputDialog("Hoe vaak heb je gespeeld?");
return behaaldePunten = JOptionPane.showInputDialog("Hoe veel punten heb je behaald?");**
}
public String getNaam(){
return naam;
}
public String getAantalKeerGespeeld(){
return aantalKeerGespeeld;
}
public String getBehaaldePunten(){
return behaaldePunten;
}
public String getSpelersinfo(){
return naam;
return aantalKeerGespeeld;
return behaaldePunten;
}
}
Aussieht kann ich nicht zurück oder legen Sie mehr als 1 Wert. Gerade begann, Java zu lernen, und es ist schwer, die Antwort zu finden überall.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nachdem bei einem genaueren Blick auf deinen code würde ich gerne klären, was zu sein scheinen ein paar Missverständnisse. Zuerst von allen, von dem, was ich sehen kann, Sie nicht brauchen, um mehrere Werte zurückgegeben werden in Ihren Methoden. In der Tat, den Namen einer Methode beginnt mit dem Wort "set" ist, sollte nicht wieder etwas zu. Auf der anderen Seite, es braucht, ist ein parameter, um "set" den Wert einer Variablen. Zum Beispiel
Beachten Sie, dass ich nicht ein JOptionPane dialog, um den Namen. An diesem Punkt im code, es ist uns egal wo der Wert herkommt. Eine andere Methode ist verantwortlich für die eigentlich immer den Wert aus der Benutzer. Diese Methode speichert den Wert für die spätere Verwendung.
Beachten Sie auch, dass Sie ein Feld besitzen, deklariert als
Glaube ich, dass die
getSpelersInfo()
undsetSpelersInfo()
sollten dies verwenden, das ist der Grund, warum ich behaupten, dass Sie nicht brauchen, um mehrere Werte zurückgeben von diesen beiden Methoden.Schließlich, es scheint, dass Sie schaffen, was wir nennen eine POJO. Siehe diesen link für weitere Informationen darüber, was die Abkürzung bedeutet.
Die Grundlagen einer
return
Aussage ist, dass es bewirkt, dass das Programm zu verlassen der aktuellen Funktion(Unterprogramm) und fortsetzen, von wo aus die Funktion aufgerufen wurde, die ist der return-Adresse.Wenn Sie eine Funktion eingeben, die Absender-Adresse ist gespeichert auf dem Anruf-Stapel, so seine leicht zu erreichen.
Also wie bei deinem code, wenn Sie eine
return
Aussage und dann noch eines, und das letztere wird nicht aufgerufen werden.Wenn ich mich nicht Irre, wird es nicht selbst kompiliert, auf den meisten Compilern.
Also, was Sie tun müssen, ist Thema einer return-Anweisung zurückgibt, die alle der Zeichenfolge zusammen.
Das kann getan werden, mit vielen grundlegenden Datenstrukturen, die verfügbar sind in der Java-standard-Bibliothek, und wenn Sie nicht wollen, sich zu engagieren in, dass, könnten Sie sogar hängen Sie die Zeichenfolgen in eine große Zeichenfolge und dann teilen Sie es nach.
Aber für jetzt, was ich vorschlagen würde, ist zu Lesen, eine grundlegende Java-Buch/tutorial oder gar eine grundlegende Buch über Programmiersprachen.
Goodluck!
Link zu einigen grundlegenden Java-Datenstrukturen
Bearbeiten
Als Code-Guru wies darauf hin, und richtig, die beste Herangehensweise an dieses Problem ist mit einem POJO, Sie können sehen, eine schöne Erklärung in seiner Antwort.
Obwohl ein Buch Lesen und verstehen der Grundlagen ist meiner Meinung nach schlägt alle technischen Lösungen an dieser Stelle
Nein, Sie können nicht mehr zurück, als ein Wert auf diese Weise.
Den Weg der
return
Schlüsselwort funktioniert, ist, dass Sie sofort die Kontrolle wieder zurück an den aufrufenden code, mithilfe der zurückgegebenen Wert, als der Wert der Funktion. Die erste Rückruf-es sieht verlassen der Funktion selbst, so dass jede nachfolgende code wird niemals ausgeführt werden.In der Regel, sollten Sie nicht haben, um jemals zurückgeben mehrerer Werte aus einer Funktion in dieser Weise. Jedoch, wenn Sie wollen, um eine Liste der Werte, können Sie packen Sie Sie in einem Container-Objekt (wie z.B. ein Objekt von
java.util.Vector
) und zurück, der ein vector-Objekt. Jedoch, es scheint nicht, dass notwendig ist, in Ihren code, den Sie aufgeführt.In den code geschrieben, jedoch, wie es scheint, anstatt die Werte aus der Funktion, die Sie möchten, um Ihre Instanz-Variablen der Klasse festgelegt werden, die von der
JOptionPane
fordert. Dann müssen Sie nur noch einen einzigenreturn
- Anweisung am Ende der Funktion, nachdem alle diese Aufgaben abgeschlossen. Beachten Sie, dass, wenn die Funktion deklariert wirdvoid
(das heißt, es gibt keinen Wert zurück), die Sie nicht brauchen, um einereturn;
Zeile am Ende, als, sobald es das Ende erreicht, der die Methode beendet. Manchmalreturn;
ist nützlich (z.B. wenn Sie mehrere Punkte zurück), aber das ist ein Thema für eine Studie zu einem anderen Zeitpunkt.Viele moderne Sprachen haben die elegante Fähigkeit, mehrere Werte zurückgegeben werden, aber in java nicht. Als eine praktische Sache, die Sie haben zu wählen, etwas anderes. Die 100% akzeptable Lösung aus der Sicht des alles, aber Effizienz ist die Rückgabe ein neues Objekt eine neue Klasse entworfen, um die Menge der Rückgabewerte. ie;
Klasse TwoStrings { String name; String Adresse; ... }
und in deinem code return(new TwoStrings("foo","bar"));
Anderen voll akzeptabel Auswahl ist die Umgestaltung der Benutzeroberfläche ist es natürlich zu
Rückkehr der Werte eine zu einem Zeitpunkt. Wenn Sie wollte "getXandY(), der die Umgestaltung als getX() und getY()
Eine häufige Wahl ist, um den container für die Rückgabewerte einer der Parameter von
der angerufene. Anstatt "name" und "Adresse", liefern eine "person", um die Funktion
die geladen werden, mit Namen und Adresse (und vermutlich auch zurück ein Indikator für Erfolg).
Weniger akzeptable Weise zu benutzen, die nicht spezifisch arrays oder Vektoren, um mehrere Werte zurückgeben
Zumindest akzeptable ist die Rückgabe ein Wert, und Versteck die andere Werte, die für die Nutzung durch die
Anrufer "Rückkehr von Seite-Effekt"
Ja, Sie sind richtig, Sie können nicht mehr als eine return-Anweisung in einer Methode. Wie über die Rückkehr ein POJO zurück an den Aufrufer der Methode und der Wert dort?