2017-10-15 4 views
0

Bon, je sais que celui-ci a déjà été demandé mais je n'arrive pas à comprendre ce qui ne va pas. Voici mes instructions:Java Jeu de devinettes de nombres aléatoires avec boîte de dialogue

"Ecrivez un programme qui génère un nombre aléatoire compris entre 1 et 1000 inclusivement, puis demandez à l'utilisateur de deviner le nombre, si le résultat de l'utilisateur est supérieur au nombre aléatoire, le programme devrait afficher "Trop haut, réessayez." Si la supposition de l'utilisateur est plus basse que le nombre aléatoire, le programme devrait afficher "Trop bas, réessayez." Le programme devrait utiliser une boucle qui se répète jusqu'à ce que l'utilisateur devine correctement le nombre aléatoire. En outre, comptez le nombre de suppositions que l'utilisateur fait.Lorsque l'utilisateur devine correctement le nombre aléatoire, le programme devrait afficher le nombre de suppositions L'entrée et la sortie doivent être effectuées avec les boîtes de dialogue et de message. "

J'ai travaillé et lu toute la semaine à ce sujet et c'est ma deuxième incarnation. Je suis au point où ma tête est tordue de toute la lecture. Je l'obtiens pour demander un nombre dans la boîte de dialogue et alors rien. Qu'est-ce qui me manque pour que la boucle continue? S'il vous plaît expliquer le quoi et pourquoi. Merci d'avance de regarder.

import java.util.Scanner;  // Needed for the Scanner class. 
import java.util.Random;   // Needed for the Random class. 
import javax.swing.JOptionPane; // Needed for JOptionPane. 

/** 
This program generates a random number guessing game. 
*/ 

public class GuessingNumbersGame 
{ 
    public static void main(String[] args) 
    { 
// Create an object and assign a whole random number 
// from 1 to 1000 to it. 
     int rnumber;` 
     Random randomNumbers = new Random(); 
     rnumber = randomNumbers.nextInt(1000) + 1; 

// Ask the user to guess the random number. 
     String answer; 
     int guess; 
     answer = JOptionPane.showInputDialog("Enter a whole " + 
      "number between 1 and 1000."); 
     guess = Integer.parseInt(answer); 
     int guesses; 
     guesses = 0;               

// Create a loop of user guesses versus the random number 
// until the user answers correctly and keep track of the 
// number of times the user guesses. 
     while (guess != rnumber); 
     {         
      if (guess > rnumber) 
      { 
       JOptionPane.showMessageDialog(null,"Too high, try again."); 
       guess = Integer.parseInt(answer); 
       guesses++; 
      }    
      if (guess < rnumber) 
      {       
       JOptionPane.showMessageDialog(null,"Too low, try again."); 
       guesses++; 
      } 
     }  
     while (guess == rnumber) 
     {     
      guesses++; 
      JOptionPane.showMessageDialog(null,"Congratulations! The correct " + 
       "number is " + rnumber + ",and you had" + guesses + "guesses."); 

     } 

    System.exit(0); 
    } 
} 
+3

Indentez correctement votre code si vous voulez que les utilisateurs essaient de le lire. – khelwood

Répondre

0

D'abord, changer while (guess == rnumber) {-if(guess == rnumber) { afin qu'il exécute une seule fois.
En ce qui concerne la réponse à votre question, vous devez deviner et répondre à quelque chose.
Je recommande de le faire dans la console, ce qui serait de définir la réponse à java.util.Scanner.nextLine();, puis deviner la même chose. Pas très facile à faire sur JOptionPanes.

0

Votre programme n'est pas construit correctement. Il y a peu de problèmes importants avec votre implémentation de l'algorithme simple qu'on vous a demandé d'écrire. Il pourrait être formulé de cette façon (comme un pseudo-code ici):

begin 

guess <- 0 
guesses <- 0 
randnum <- new random number [1,1000] 
do 
    guess <- ask user input 
    guesses++ 
    if guess > randnum 
     show "Too high" 
    if guess < randnum 
     show "Too low" 
while guess != randnum 

congrats // guess = randnum 
show number of guesses 

end 

Votre code ne ressemble pas à ceci. Vérifiez vos if-statements, conditions et boucles.