2013-03-06 2 views
0

Je suis novice en programmation et j'ai écrit un programme simple pour créer un jeu Rock Paper Scissors qui continue à montrer une erreur. Tout en initiant/exécutant ce programme, il semble ne pas reconnaître les variables Rock Paper et Scissors et passe directement à la condition else. Aussi, lorsque je tente l'analyse syntaxique aprèsRock Paper Scissors Variables non reconnues et programme se terminant par JAVA

int exit = 4; 
while (exit != userchoice){ 
JOptionPane.showInputDialog("Choose wisely. Enter:\n 1 for Rock \n 2 for Paper " 
     + "\n 3 for Scissors \n or 4 to Exit:\n"); 

Le programme arrête juste là donc j'ai encore du mal à trouver une autre façon. Aussi, comment ce programme serait-il terminé avec la condition que je vais avec? Je ne comprends toujours pas comment terminer cette boucle car je pensais qu'avec un simple crochet final, la boucle serait bouclée une fois que la condition serait remplie, en tapant dans ce cas le chiffre 4.

L'aide serait grandement appréciée. Je vous remercie.

public static void main(String[] args) { 
    String inString = null; 
    int compchoice = (int)(Math.random() * 3); 
    int userchoice = 0; 
    int Rock = 1, Paper = 2, Scissors = 3; 

    Scanner input = new Scanner(System.in); 
    JOptionPane.showMessageDialog(null, 
      "Welcome to JanKenPo! It is You Vs. The Computer\n"); 

    int exit = 4; 
    while (exit != userchoice){ 
    JOptionPane.showInputDialog("Choose wisely. Enter:\n 1 for Rock \n 2 for Paper " 
      + "\n 3 for Scissors \n or 4 to Exit:\n"); 

    if (userchoice == Rock && compchoice == Paper) { 
      JOptionPane.showMessageDialog(null, "Paper covers Rock! You win this Round."); 
      }    
    else if (userchoice == Rock && compchoice == Scissors){ 
      JOptionPane.showMessageDialog(null, "Rock crushes Scissors! You win this Round."); 
      }   
    else if (userchoice == Scissors && compchoice == Paper){ 
      JOptionPane.showMessageDialog(null, "Scissors cuts Paper! You win this round."); 
      } 
    else if (userchoice == Paper && compchoice == Rock){ 
      JOptionPane.showMessageDialog(null, "Paper Covers Rock! Computer wins this Round."); 
      } 
    else if (userchoice == Paper && compchoice == Scissors){ 
      JOptionPane.showMessageDialog(null, "Scissors cuts Paper! Computer wins this Round."); 
      } 
    else if (userchoice == Scissors && compchoice == Rock){ 
      JOptionPane.showMessageDialog(null, "Rock crushes Scissors! Computer wins this Round."); 
      } 
    else if (userchoice == compchoice){ 
      JOptionPane.showMessageDialog(null, "It's a Tie! Both you and the computer chose the same object."); 
     } 
    else{ 
     exit = Integer.parseInt(inString); 
     } 
    } 
} 
JOptionPane.showMessageDialog(null, "Good Bye!"); 
} 

Répondre

1

Vous devez faire

String input = JOptionPane.showInputDialog(...); 
userChoice = Integer.parseInt(input); 

En ce moment, vous êtes juste en ignorant complètement l'entrée et non la mise en userChoice :)

0

Eh bien, vous devez effectuer les opérations mentionnées ci-dessus ainsi que: Vous n'avez pas besoin du scanner car vous obtenez une entrée de showInputDialog(); Ajouter dans votre corps tout en boucle {

String input = JOptionPane.showInputDialog(...);

userChoice = Integer.parseInt(input);

int compchoice = (int)(Math.random() * 3) +1;

En ajoutant +1, vous obtiendrez la sortie b/w 1-3 et que vous devez ajouter ceci en boucle comme l'ordinateur doit faire un choix chaque fois que la boucle fonctionne.

Retirez également la ligne du bloc autre exit =Integer.parseInt(inString);

Votre programme prendra fin lorsque l'utilisateur entrera choix 4;

Questions connexes