我应该创建一个程序,提示用户输入一个整数作为机密的最高值,并对其进行一些猜测。该程序生成一个秘密号码。在他们用尽所有猜测或猜测正确后,我的程序应该询问用户是否想再次播放。目前,我对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)
的声明。我建议重新看一下节目的结尾。