2010-08-23 13 views
5

Ich lerne gerade JAVA und habe ein bisschen Probleme mit diesem bestimmten Teil meines Codes. Ich habe mehrere Websites durchsucht und viele verschiedene Methoden ausprobiert, aber ich kann mir nicht vorstellen, wie man eine implementiert, die für die verschiedenen Möglichkeiten geeignet ist.Validierung der Benutzereingabe für JOptionPane.showInputDialog

int playerChoice = Integer.parseInt(JOptionPane.showInputDialog(null, "Enter number for corresponding selection:\n" 
       + " (1) - ROCK\n (2) - PAPER\n (3) - SCISSORS\n")) - 1; 

Ich stelle mir vor ich brauche eine Art von Bestätigung haben, auch für die, wenn der Benutzer keinen Eingang sowie einen Eingang hat, die nicht gleich 1, 2 oder 3. Jeder Vorschläge haben, wie ich dies erreichen kann?

Ich versuchte eine while-Schleife, eine if-Anweisung auf Null zu überprüfen, bevor Sie die Eingabe in eine ganze Zahl konvertieren, sowie einige andere Arten von if else if-Methoden.

Vielen Dank im Voraus!

Antwort

2

Lesen Sie den Abschnitt aus dem Swing-Lernprogramm unter How to Make Dialogs, das Ihnen zeigt, wie Sie JOptionPane einfach verwenden können, sodass Sie die Eingabe nicht überprüfen müssen.

Es gibt verschiedene Ansätze, die Sie verwenden könnten. Sie können ein Kombinationsfeld verwenden, um die Auswahlmöglichkeiten anzuzeigen, oder mehrere Schaltflächen, um eine Auswahl zu treffen.

Das Lernprogramm zeigt Ihnen auch, wie Sie "Automatisches Schließen des Dialogs beenden", damit Sie die Benutzereingaben überprüfen können.

5

Sie müssen so etwas tun, schlechten Eingang zu handhaben:

boolean inputAccepted = false; 
while(!inputAccepted) { 
    try { 
    int playerChoice = Integer.parseInt(JOption.... 

    // do some other validation checks 
    if (playerChoice < 1 || playerChoice > 3) { 
     // tell user still a bad number 
    } else { 
     // hooray - a good value 
     inputAccepted = true; 
    } 
    } catch(NumberFormatException e) { 
    // input is bad. Good idea to popup 
    // a dialog here (or some other communication) 
    // saying what you expect the 
    // user to enter. 
    } 

    ... do stuff with good input value 

}