有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java猜谜游戏问题

我应该创建一个程序,提示用户输入一个整数作为秘密的最大值,并对其进行多次猜测。程序生成一个秘密号码。在他们用尽所有猜测或正确猜测后,我的程序应该询问用户是否想再次播放。目前,我对if语句有一些问题,即确定某人的回答是否正确,然后询问他们是否想查看密码。目前,当我这样做时,无论我猜对与否,它仍然会导致密码询问用户是否希望显示它。我不知道该怎么办。同样在while循环结束时,在程序接近结束时,我想在第二轮之后询问用户是否愿意再次玩。但由于某些原因,它会被忽略,同时将下一个布尔输入false设置为下面的TrueOrFalse布尔值。如果有人能就如何缩短代码给出建议,那就太好了!抱歉问了这么多问题,我真的被卡住了。如果你能帮忙,谢谢你

import java.util.Scanner; 
import java.util.Random;
public class MyClass {
    public static void main(String args[]) {
      
       Scanner input = new Scanner( System.in );
       
     System.out.println("Hello! Here are the rules for this game:");
     
     System.out.println("1. You choose the limit of the secret number!");
     
     System.out.println("2. I generate the secret number!");
      
     System.out.println("3. You choose the maximum number of guesses!");
     
     System.out.println("4. You try to guess the secret number I generated within the number of guesses you entered!"); 
     
     System.out.println("5. You may win a prize!"); 
     
     System.out.println("With that being said, would you like to play? If yes please enter true, if not please enter false."); 
     
     boolean wantToPlay = input.nextBoolean();
     
      while (wantToPlay != true)
    {
     System.out.println ( "Thank you and remember to wash your hands! You may close me.");  
       
           System.out.println ( "Did you accidentally press false? If yes please enter true, if not you may leave the program. ");
      
      wantToPlay = input.nextBoolean();
      
    }
      
    System.out.println ( "Please enter the limit of the secret number.");
    
    System.out.println("Please note that your secret number will be between zero and the number you just entered."); 
    
    int upperLimit = input.nextInt();
    
    System.out.println  ( "The upper bound you entered is" + " " + upperLimit + "." + " " + "Is that correct? If yes please enter true, if not please enter false.");
      
    boolean trueOrFalse = input.nextBoolean();
      
    while (trueOrFalse != true | upperLimit == 0)
    {
         System.out.println ( "Please enter the new upper bound of the secret number. If you answered true before that is because you cannot enter 0 as a upper limit.");  

      upperLimit = input.nextInt();
       
           System.out.println ( "The upper bound you entered is" + " " + upperLimit + "." + " " + "Is that correct? If yes please enter true, if not please enter false. ");
      
      trueOrFalse = input.nextBoolean();
      
    }
     int secretNumber = (int) (Math.random()*upperLimit);
    
      
    System.out.println ( "Please enter the maximum number of guesses you would like.");
    
    int numberOfGuesses = input.nextInt();
    
     if (numberOfGuesses >= (secretNumber+1) || numberOfGuesses == 0)
    {
    System.out.println ("Please note that the number of guesses you entered is equal or greater than the possible number of values for the secret number.");
    
    System.out.println ("If you would like more of a challenge please re-enter the number of guesses below." );
    }
    
    System.out.println  ( "The number of guesses you entered is" + " " + numberOfGuesses + "." + " " + "Is that correct? If yes please enter true, if not please enter false.");
      
    boolean guess = input.nextBoolean();
    
    while (guess != true)
    {
     System.out.println ( "Please enter the new maximum number of guesses for the secret number.");  
      
      numberOfGuesses = input.nextInt();
      
        if (numberOfGuesses >= (secretNumber+1) || numberOfGuesses == 0)
    {
    System.out.println ("Please note that the number of guesses you entered is equal or greater than the possible number of values for the secret number.");
    
    System.out.println ("If you would like more of a challenge please re-enter the number of guesses below. If you entered zero please re-enter the number of guesses." );
    }
       
     System.out.println ( "The number of guesses you entered is" + " " + numberOfGuesses + "." + " " + "Is that correct. If yes please enter true, if not please enter false. ");
      
      guess = input.nextBoolean();
      
    }
  
  boolean loop = false;
  
    for (int i= 0; i < numberOfGuesses; ++i)
    {
    System.out.println ("Please enter your guess.");
   
    int guesses = input.nextInt();
    
        if (guesses > secretNumber)
        {
         System.out.println ("Your guess too high.");
        }
        
    if (guesses < secretNumber)
        {
         System.out.println ("Your guess too low.");
         
         loop = false;
         
        }

       if (guesses == secretNumber) 
       { 
        System.out.println ("Congragulations you won the game.");
        
         loop = true;
        
        break;
       }
           
    }
    
    if (loop = false)
    
    System.out.println ("Sorry you lost the game.");
    
    System.out.println ("Would you like to see the secret number? If so please enter true, if not please enter false");
    
    boolean seeSecretNumber = input.nextBoolean();
    
    if (seeSecretNumber == true)
    {
    System.out.println ("The secret number was "+ secretNumber);
    
    }
    
    System.out.println ("Would you like to play again? If so please enter true, if not please enter false.");
    
    boolean playAgain = input.nextBoolean();
      
     while (playAgain == true)
    {
      System.out.println ( "Please enter the limit of the secret number.");
    
    System.out.println("Please note that your secret number will be between zero and the number you just entered."); 
    
     upperLimit = input.nextInt();
    
    System.out.println  ( "The upper bound you entered is" + " " + upperLimit + "." + " " + "Is that correct? If yes please enter true, if not please enter false.");
      
     trueOrFalse = input.nextBoolean();
      
    while (trueOrFalse != true | upperLimit == 0)
    {
     System.out.println ( "Please enter the new upper bound of the secret number. If you answered true before that is because you cannot enter 0 as a upper limit.");  
      
      upperLimit = input.nextInt();
       
           System.out.println ( "The upper bound you entered is" + " " + upperLimit + "." + " " + "Is that correct? If yes please enter true, if not please enter false. ");
      
      trueOrFalse = input.nextBoolean();
      
    }
     secretNumber = (int) (Math.random()*upperLimit);
    
      
    System.out.println ( "Please enter the maximum number of guesses you would like.");
    
    numberOfGuesses = input.nextInt();
    
    if (numberOfGuesses >= (secretNumber+1) || numberOfGuesses == 0)
    {
    System.out.println ("Please note that the number of guesses you entered is equal or greater than the possible number of values for the secret number.");
    
    System.out.println ("If you would like more of a challenge please re-enter the number of guesses below." );
    }
    
    System.out.println  ( "The number of guesses you entered is" + " " + numberOfGuesses + "." + " " + "Is that correct? If yes please enter true, if not please enter false.");
      
    guess = input.nextBoolean();
    
    while (guess != true)
    {
     System.out.println ( "Please enter the new maximum number of guesses for the secret number.");  
      
      numberOfGuesses = input.nextInt();
      
        if (numberOfGuesses >= (secretNumber+1) || numberOfGuesses == 0)
    {
    System.out.println ("Please note that the number of guesses you entered is equal or greater than the possible number of values for the secret number.");
    
    System.out.println ("If you would like more of a challenge please re-enter the number of guesses below. If you entered zero please re-enter the number of guesses." );
    }
       
     System.out.println ( "The number of guesses you entered is" + " " + numberOfGuesses + "." + " " + "Is that correct. If yes please enter true, if not please enter false. ");
      
      guess = input.nextBoolean();
      
    }
  
  loop = false;
  
    for (int i= 0; i < numberOfGuesses; ++i)
    {
    System.out.println ("Please enter your guess.");
   
    int guesses = input.nextInt();
    
        if (guesses > secretNumber)
        {
         System.out.println ("Your guess too high.");
        }
        
    if (guesses < secretNumber)
        {
         System.out.println ("Your guess too low.");
        }

       if (guesses == secretNumber) 
       { 
        System.out.println ("Congragulations you won the game.");
        
         loop = true;
        
        break;
       }
           
    }
    
    if (loop = false)
    
    System.out.println ("Sorry you lost the game.");
    
    System.out.println ("Would you like to see the secret number? If so please enter true, if not please enter false");
    
    seeSecretNumber = input.nextBoolean();
    
    if (seeSecretNumber == true)
    {
    System.out.println ("The secret number was "+ secretNumber);
    
   
   
   
   
  System.out.println ("Would you like to play again? If so please enter true, if not please enter false.");
    
    playAgain = input.nextBoolean();
    
    }
    
      
    }
    
    if (playAgain==false)
    {
        System.out.println ("Thank you for playing, have a good day and wash your hands!");
    }
    
        
    }
}

共 (1) 个答案

  1. # 1 楼答案

    首先,if(loop = false)应该是if(loop == false),您还忘了在这个if语句后面添加括号{}。此外,您的play语句位于seeSecretNumber if语句中。我也没有看到if(playAgain)的语句。我建议你重新看一下节目的结尾