2010-08-23 3 views
5

Je suis en train d'apprendre JAVA et d'avoir un peu de mal avec cette partie particulière de mon code. J'ai cherché plusieurs sites et j'ai essayé de nombreuses méthodes différentes, mais je n'arrive pas à comprendre comment en mettre en œuvre une qui fonctionne pour les différentes possibilités.Validation de l'entrée utilisateur pour 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; 

j'imagine que je dois avoir un certain type de validation, même lorsque l'utilisateur n'a pas d'entrée ainsi qu'une entrée qui n'est pas 1, 2 ou 3. Quelqu'un at-il des suggestions sur la façon dont je peux y arriver?

J'ai essayé une boucle while, une instruction if pour vérifier null avant de convertir l'entrée en entier, ainsi que quelques types différents de if else if méthodes.

Merci d'avance!

Répondre

2

Lisez la section du tutoriel Swing sur How to Make Dialogs, qui vous montre comment utiliser JOptionPane facilement, donc vous n'avez pas besoin de valider l'entrée.

Vous pouvez utiliser différentes approches. Vous pouvez utiliser une zone de liste déroulante pour afficher les choix ou peut-être plusieurs boutons pour sélectionner un choix.

Le didacticiel vous montre également comment "Arrêter la fermeture automatique de la boîte de dialogue" pour vous permettre de valider la saisie des utilisateurs.

5

Vous devez faire quelque chose comme ça pour gérer une mauvaise entrée:

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 

}

Questions connexes