2016-10-19 1 views
1

editierte - noch gleichen FehlernRückkehr TextField- Eingang Lambda-Ausdrücke mit

Ich versuche, eine Funktion zu erstellen, die ein Wort vom Benutzer gewählten bekommen, stellen Sie sicher, dass sie alle Zeichen sind, und es dann zurück. Aber ich bekomme den Fehler

"incompatible types: bad return type in lambda expression 
unexpected return value 
Unnecessary return statement" 

Ich verstehe nicht, wie man es ändert, damit es besser funktioniert.

String newWordScene(Stage primaryStage) 
{ 
    Text prompText = new Text("Word to guess: "); 
    TextField wordToGuess = new TextField(); 
    Button submitButton = new Button(); 

    GridPane grid = new GridPane(); 
    grid.add(prompText, 0, 0); 
    grid.add(wordToGuess, 0, 1); 
    grid.add(submitButton, 0, 2); 

    Scene newWordScene = new Scene(grid, 500, 500); 
    primaryStage.setScene(newWordScene); 
    primaryStage.show(); 

      submitButton.setOnAction(e-> 
    { 
     if(verify(wordToGuess.getText())) 
      return wordToGuess.getText(); 
    }); 
} 
} 
+1

Es gibt einen Syntaxfehler. Wenn Sie eine return-Anweisung in einem Lambda verwenden, müssen Sie geschweifte Klammern wie 'e -> {return wordToGuess.getText(); } ' –

+0

Surround mit geschweiften Klammern oder einfach' wordToGuess.getText() ' – Saravana

+0

Welche Button-Klasse verwenden Sie. Ich kann keinen mit einer setOnAction() -Methode finden. –

Antwort

0

Wenn Sie ein Lambda mit setOnAction() verwenden, können Sie keinen Wert zurückgeben.

+0

Was soll ich tun, um diesen Wert dann zu bekommen? –

+0

@SamanthaBlansett Was möchten Sie mit dem Textwert tun? –

+0

Ich benutze es für ein Hangman-Spiel, wo ein Benutzer ein Wort wählt und der nächste Spieler es erraten muss. –