2013-10-03 5 views
0

Je ne peux pas comprendre ce que je fais de mal dans mon programme de jeu de devinettes java. L'ordinateur sélectionne un nombre entre 1 et 100 et l'utilisateur est invité à le deviner. L'utilisateur est invité avec trop bas ou trop haut et a demandé à deviner encore jusqu'à ce qu'ils l'obtiennent juste. Mon problème est que quand vous devinez le nombre exact, il dira toujours trop bas, mais si vous tapez le même nombre, il dira correct.java devine le jeu fonctionne mais ne fonctionne pas correctement

package guessinggame; 
import java.util.Scanner; 
/** 
* 
* @author 
*/ 
public class GuessingGame { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) 
    { 
     Scanner input = new Scanner (System.in); 

     int guesses; //number of users guesses 

     int housePick; //number the user must guess 

     int guess;  //users guess 

     guesses = 0; 

     housePick = (int)((Math.random() * 100) +1); 
     //sets housePick to random number from 1 to 100 

     System.out.println("I'm thinking of a number between 1 and 100") ; 
     //print "Im thinking of a nubmer between 1 and 100" 

     System.out.println("Can you guess what it is?"); 
     //print "can you guess what it is" 

     System.out.println 
       ("Enter a number from 1 to 100 (including 1 and 100)"); 
     //prompt user to enter number 

     System.out.println("test " +housePick); 
     //Test: tells user the correct answer 
     do 
     { 
      guess = input.nextInt(); 

      if (guess > housePick) //and if guess > housePick... 
      { 
       if ((guess - 10) <= housePick) 
        //and if guess is 10 numbers away from housePick... 

       { 
        System.out.println("Close, but too high. Try again."); 
        //print "close but too high, try again" 

        guesses = guesses+ 1 ; 



       } 

       else    //if guess is not close and guess>housePick... 
       { 
        System.out.println ("Too high, try again."); 
        //then print "Too high, Try again" 

        guesses = guesses+ 1; 


       }       
      } 
      else //If guess<housePick 
      { 
      if ((guess + 10) >= housePick) //AND if guess is close to housePick 
      { 
       System.out.println ("close, but too low.") ; 
       //then print "close, but too low" 

       guesses = guesses + 1; 

      } 
      else//If guess isnt close to housePick and is less than housePick... 
      { 
       guesses = guesses+ 1; 

       System.out.println ("Too low.");//then print "too low" 
      } 

      } 

     }while (guess != housePick); //while guess doesnt = housePick... 

      guess = input.nextInt(); 
     //save entered number as guess 

    guesses = guesses + 1; 

     System.out.println ("You win! It took you " + guesses + " guesses."); 
     //If guess = housePick print "Yout win! It took you (# of guesses)" 




    } 
} 
+0

Qu'avez-vous fait pour déboguer ??? –

Répondre

2
else //If guess<housePick 

Vous avez tort à la condition ci-dessus, il est équivalent à guess <= housePick. il doit être

else if(guess < housePick) 

En outre, après bloc de code est exécuté quand housePick == guess donc il n'y a pas le point de faire guess = input.nextInt(), vous pouvez dire tout simplement vous gagnez.

}while (guess != housePick); //while guess doesnt = housePick... 

    // At this point, guess == housePick, why ask for input again???? 

     // guess = input.nextInt(); 
     //save entered number as guess 

    //guesses = guesses + 1; 
+0

wow. Impossible de croire que je ne pouvais pas comprendre cela. – user2809114

+2

@ user2809114 De telles choses se produisent. Codage heureux :) – TheKojuEffect

0

permet de voir

Housepick = 87

estimation = 87

if ((guess + 10) >= housePick) //AND if guess is close to housePick 
{ 
     System.out.println ("close, but too low.") ; 
     //then print "close, but too low" 

     guesses = guesses + 1; 

} 

hmm 87 + 10 est supérieure à 87

Et il brise le do/while boucle et vous êtes à nouveau invité

1

Vous avez également un input.nextInt supplémentaire() après le temps:

}while (guess != housePick); //while guess doesnt = housePick... 

guess = input.nextInt(); 
//save entered number as guess 

Supprimer ce

Questions connexes