【问题标题】:Do-While Loop Error - Not Repeating Play Again GameDo-While 循环错误 - 不再重复玩游戏
【发布时间】:2018-10-07 01:55:02
【问题描述】:

我面临一个问题,如果用户想再次玩游戏,它不会提示用户输入数字,而是会打印出语句,我想知道为什么要这样做......如果用户输入“否”并且游戏将结束,则它工作得很好。我将提供一张图片,以便您更好地了解我的问题。

 import java.util.Scanner; 
import java.util.*;
public class Moropinzee
{

  public static void main(String[] args) {

      int Monkey = 1;
      int Robot = 2;
      int Pirate = 3;
      int Ninja = 4;
      int Zombie = 5;
      int player1 = 0;
      int player2 = 0;
      String answer;     

      Scanner scan = new Scanner(System.in);  

      System.out.print("Hey, let's play Moropinzee!\n" + 
              "Please enter a move.\n"); 

      do{              
         System.out.println("Player 1: Enter a number 1-5 for Monkey, Robot, Pirate, Ninja, or Zombie:");   

         while(!(player1>0) || !(player1<6))    
         {       
             player1 = scan.nextInt();       
             if(player1>=6)
                System.out.println("Invalid choice, Player 1. Enter a number 1-5:");              
         }  


         Scanner keyboard = new Scanner(System.in); 
         System.out.println("Player 2: Enter a number 1-5 for Monkey, Robot, Pirate, Ninja, or Zombie:");

         while(!(player2>0) || !(player2<6))
         {       
             player2 = scan.nextInt();       
             if(player2>=6)
             System.out.println("Invalid choice, Player 2. Enter a number 1-5:");              
         }  


         if(player1==(player2)){
            System.out.println("Nobody wins!");    
         }
         else if (player1==(1)){
            if (player2==(4)){
               System.out.println("Monkey fools Ninja! Player 1 Wins!"); 
            }      
         }

         else if (player2==(1)){
            if (player1==(4)){
               System.out.println("Monkey fools Ninja! Player 2 Wins! "); 
            }
         }         
         if (player1==(1)){
            if (player2==(2))
                System.out.println("Monkey unplugs Robot! Player 1 Wins!");
         }
         if (player2==(1)){
            if (player1==(2))
                System.out.println("Monkey unplugs Robot! Player 2 Wins!");
         }      
         if (player1==(2)){
            if (player2==(4))
                System.out.println("Robot chokes Ninja! Player 1 Wins!");
         }         
         if (player1==(4)){
            if (player2==(2))
                System.out.println("Robot chokes Ninja! Player 2 Wins!");
         }        
         if (player1==(2)){
            if (player2==(5))
                System.out.println("Robot crushes Zombie! Player 1 Wins!");
         }
         if (player1==(5)){
            if (player2==(2))
                System.out.println("Robot crushes Zombie! Player 2 Wins!");
         }
         if (player1==(3)){
            if (player2==(2))
                System.out.println("Pirate drowns Robot! Player 1 Wins!");
         }
         if (player1==(2)){
             if (player2==(3))
                  System.out.println("Pirate drowns Robot! Player 2 Wins!");
         }
         if (player1==(3)){
             if (player2==(1))
                  System.out.println("Pirate skewers Monkey! Player 1 Wins!");
         }
         if (player1==(1)){
             if (player2==(3))
                 System.out.println("Pirate skewers Monkey! Player 2 Wins!");
         }
         if (player1==(4)){
             if (player2==(3))
                 System.out.println("Ninja karate chops Pirate! Player 1 Wins!");
         }
         if (player1==(3)){
             if (player2==(4))
                 System.out.println("Ninja karate chops Pirate! Player 2 Wins!");
         }
         if (player1==(4)){
             if (player2==(5))
                 System.out.println("Ninja decapitates Zombie! Player 1 Wins!");
         }
         if (player1==(5)){
             if (player2==(4))
                 System.out.println("Ninja decapitates Zombie! Player 2 Wins!");
         }
         if (player1==(5)){
             if (player2==(3))
                 System.out.println("Zombie eats Pirate! Player 1 Wins!");
         }
         if (player1==(3)){
             if (player2==(5))
                 System.out.println("Zombie eats Pirate! Player 2 Wins!");
         }
         if (player1==(5)){
             if (player2==(1))
                 System.out.println("Zombie savages Monkey! Player 1 Wins!");
         }
         if (player1==(1)){
             if (player2==(5))
                 System.out.println("Zombie savages Monkey! Player 2 Wins!");
         }

         System.out.println("Do you want to play again? Yes or No");
         answer = keyboard.next();
     }
     while(answer.equalsIgnoreCase("Yes"));
  }
}

https://i.stack.imgur.com/64H22.png

【问题讨论】:

    标签: java loops if-statement do-while


    【解决方案1】:

    问题是您从未在第一次迭代后重置变量。在您的循环中,您只修改 player1 和 player2 变量,如果它们不在有效范围内,它们将在以下迭代中。因此,只要它继续运行,每次迭代都将与第一次相同。尝试将您的代码更改为:

    player1 = 0;
    player2 = 0;
    System.out.println("Do you want to play again? Yes or No");
    answer = keyboard.next();
    

    【讨论】:

      猜你喜欢
      • 2015-10-22
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-06
      • 2020-03-23
      • 1970-01-01
      相关资源
      最近更新 更多