Java猜谜游戏问题

  • 本文关键字:问题 游戏 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!");
}


}
}

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

最新更新