【问题标题】:How to restart while loop in Number Guessing Game如何在猜数游戏中重新启动while循环
【发布时间】:2017-06-20 06:06:35
【问题描述】:

我对这段代码有疑问。 我看到的问题是,当用户运行代码并正确猜测或使用最大尝试次数时,while 循环不会启动并允许游戏重新启动。 我的想法是将计数器(尝试)重置为零并重新开始,但我只是收到带有总分的退出消息。

int guess = 0;
     int attempt = 0;
     int number = new Random().nextInt(1000) + 1;
     int scorePlayer = 0; int scoreComputer = 0;
     boolean repeat;

     System.out.println("Hello and welcome to the number guessing game.");
     System.out.println("Please guess a number between 1 and 1000");


    while(repeat == true){
         do{
             Scanner scan = new Scanner(System.in);
             guess = Integer.parseInt(scan.nextLine());
             System.out.println("The number you guessed is "+guess);
             attempt++;

             if(guess == number){
                 System.out.println("Congratulations! You got it!!");
                 scorePlayer++;
                 System.out.println("Would you like to play again? [YES/NO]");
                 Scanner a = new Scanner(System.in);
                 String answer = a.nextLine().toUpperCase();
                 if (answer != "YES"){
                     //repeat = false;
                     System.out.println("Thank you for playing");
                     System.out.println("The final score is "+scorePlayer+" to you and "+scoreComputer+" to the server");
                     if (scorePlayer<scoreComputer){
                         System.out.println("Computer wins!");
                     }else{
                         System.out.println("You win!");
                     }break;
                 }else{
                     attempt = 0;
                 }
             }else if(guess < number){
                 System.out.println("That is incorrect, try a larger number");

             }else if(guess > number){
                 System.out.println("That is incorrect, try a smaller number");

             }if(attempt == 10 && guess != number){
                 System.out.println("That is the max number of guesses allowed");
                 System.out.println("The number you were looking for is "+number);
                 scoreComputer++;
                 System.out.println("Would you like to play again? [YES/NO]");
                 Scanner b = new Scanner(System.in);
                 String answer = b.nextLine().toUpperCase();
                 if (answer != "YES"){
                     //repeat = false;
                     System.out.println("Thank you for playing");
                     System.out.println("The final score is "+scorePlayer+" to you and "+scoreComputer+" to the server");
                     if (scorePlayer<scoreComputer){
                         System.out.println("Computer wins!");
                     }else{
                         System.out.println("You win!");
                     }break;
                 }else{
                     attempt = 0;
                 }
             }

         }while(guess != number || attempt == 0);
         repeat = false;
    }

【问题讨论】:

  • 假设您修复了编译器错误while(repeat=true):您在第一个内部do-while 循环完成后直接将repeat 设置为false。那么外循环的概念是什么呢?它只运行一次。

标签: java do-while


【解决方案1】:

单“=”是赋值运算符,只需将其更改为双“==”即可。

while(repeat == true)

【讨论】:

  • 这并不能解决问题,问题不是由那个错字引起的,所以我认为问题可能出在其他地方。在猜到正确数字或用户尝试次数用尽后,代码不允许游戏重新启动
【解决方案2】:

除了ugur说的,你可以简单地做

while(repeat)

因为repeat是一个布尔变量(返回真或假)

【讨论】:

    【解决方案3】:

    检查您正在设置repeat=false 的外循环中的最后一行。所以当你从内部循环break 时,外部while 检查重复,除了第一次之外,每次都是错误的。

    【讨论】:

      猜你喜欢
      • 2014-10-30
      • 1970-01-01
      • 2021-11-02
      • 2021-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      相关资源
      最近更新 更多