【问题标题】:Else-If / While Loop stuckElse-If / While 循环卡住
【发布时间】:2013-11-13 15:01:56
【问题描述】:

我正在尝试制作一个程序,该程序接受最小和最大数字的输入,然后在该范围内生成一个随机数。然后用户猜测一个数字,如果它太高,它会输出一个消息。如果它太低,它会输出一个消息。我坚持的部分是当您正确猜出数字时,用户输入“Y”或“N”再次运行程序。

我的代码如下:

import java.util.Scanner;
import java.util.Random;
public class GuessingGame_V2
{
public static void main(String[] args)
{
    Scanner in = new Scanner(System.in);
    System.out.print('\u000C');
        int min;
        int max;
        int userGuess;
        int numberGuesses = 1;   
        System.out.println("Enter the minimum number: ");
        min = in.nextInt();
        System.out.println("Enter the maximum number: ");
        max = in.nextInt();
        Random r = new Random();
        int randomNumber = r.nextInt(max - min + 1) + min;
        System.out.println("Enter your guess: ");
        userGuess = in.nextInt();
    String guessAgain = ("Y");
while(!guessAgain.equalsIgnoreCase("N"))
{         
    if( userGuess > randomNumber ){
        System.out.println("Your guess was to high! Guess again!");
        System.out.println("Input your new guess: ");
        userGuess = in.nextInt();
        numberGuesses++;
       }
    else if (userGuess < randomNumber ){
        System.out.println("Your guess was to low! Guess again!");
        System.out.println("Input your new guess: ");
        userGuess = in.nextInt();
        numberGuesses++;
       }
    else 
       {  
        System.out.println("Congratulations, you guessed the number!");
        System.out.println("It took " + numberGuesses + " tries");
        System.out.println("Guess another number? (Y/N)");
        guessAgain = in.next();
       }
    }
   System.out.println("Thank's for playing!");
   }
}

当用户点击“Y”重新启动程序时,问题就出现了。它不会重新启动,只会再次显示最终消息。 (打印语句、猜测次数和 Y/N)。当用户键入“Y”时,我需要重新启动程序

我是在网站上发帖的新手.. 如果我把代码搞砸了,请原谅我 - 提前感谢您的帮助 -

*Changes - 2013 年 11 月 13 日 10:58 将代码更改为接受多个输入并改为 继续接受输入,直到用户正确为止。

【问题讨论】:

  • 这段代码不是只允许他们在开始新游戏之前猜测一次吗?如果是这样,那就是您应该首先解决的问题。
  • 是的,你是对的,在我将代码发布到这里之前,我实际上是在玩代码。我有它,这样你就可以猜到不止一次,我已经把它改回来了。感谢您引起我的注意!

标签: loops if-statement while-loop


【解决方案1】:

您需要嵌套循环,因为您正在执行两个重复操作 - 第一个是重复游戏,第二个是提示在一个游戏中进行猜测。

所以使用嵌套循环。一个循环提示用户他或她是否想玩,并在最后用相同的问题再次提示用户。嵌套循环应该是你所拥有的。

你的代码应该是这样的

while (stillPlaying) {
  while (stillGuessing) {
  }
}

希望对您有所帮助。

【讨论】:

  • 再一次,我对这个比较陌生.. 那会去哪里?那会代替我的“while(!guessAgain.equalsIgnoreCase(“N”))”吗?然后我还必须定义 StillGuessing 和 StillPlaying 吗?另请注意,我编辑了代码 -
  • 您不一定需要boolean 变量,但您需要根据用户响应设置的条件。因此,当用户在内循环中猜测正确的数字时,您将有一个评估为false 的条件。当用户用“N”表示他/她不再希望在外循环中播放时,评估为false 的条件。最简单的方法是先实现内部循环——游戏正常运行一次。
猜你喜欢
  • 2023-03-22
  • 2020-03-01
  • 1970-01-01
  • 2015-11-08
  • 1970-01-01
  • 2012-06-18
  • 1970-01-01
  • 2015-04-07
  • 1970-01-01
相关资源
最近更新 更多