首页 > 解决方案 > Java Rock Paper 游戏循环次数过多

问题描述

我必须制作一个石头剪刀布游戏,你可以在其中与电脑对战。1,2,3分别用于石头、纸、剪刀。循环5次,分别显示电脑赢和玩家赢的数量。我得到了一切工作,除了循环。当你输入一个大于 3 的数字时,它应该说“无效”并循环直到你玩了 5 个有效的游戏。但是,如果你输入奇数个错误答案,它会让你玩 6 个游戏,如果你输入偶数个错误答案,它会让你玩 5 个游戏。我需要它来让你玩 5 场比赛,不管奇数和偶数是否错误。请帮忙。

public static void main(String[] args) {
    Scanner reader = new Scanner(System.in);
    int player = 0, computer = 0;
    int computerScore = 0, playerScore = 0;
    int loops = 0;

    int rock = 1;
    int paper = 2;
    int scissors = 3;

    for (int i = 1; i < 6; i++) {


        computer = (int) (Math.random() * 3) + 1;
        System.out.println("Enter 1 for Rock, 2 for Paper, 3 for Scissors");
        player = reader.nextInt();


        if (player > scissors) {
            System.out.println("Not a valid response");
            System.out.println("Enter 1 for Rock, 2 for Paper, 3 for Scissors");
            player = reader.nextInt();
            i--;

        }


        if (player == computer) {
            System.out.println("Tie");
        } else if (player == rock) {

            if (computer == paper) {
                System.out.println("Player picked Rock, Computer picked Paper, Computer wins");
                computerScore++;
            } else if (computer == scissors) {
                System.out.println("Player picked Rock, Computer picked Scissors, Player wins");
                playerScore++;
            }
        } else if (player == paper) {

            if (computer == rock) {
                System.out.println("Player picked Paper, Computer picked Rock , Player wins");
                playerScore++;
            } else if (computer == scissors) {
                System.out.println("Player picked Paper, Computer picked Scissors, Computer wins");
                computerScore++;
            }
        } else if (player == scissors) {
            if (computer == rock) {
                System.out.println("Player picked Scissors, Computer picked Rock , Computer wins");
                computerScore++;
            } else if (computer == paper) {
                System.out.println("Player picked Scissors, Computer picked Paper, Player wins");
                playerScore++;
            }

        }

    }
    System.out.println("");
    System.out.println("Computer Wins " + computerScore);
    System.out.println("Player Wins " + playerScore);

}

标签: javaloopsif-statement

解决方案


为了让事情变得更容易,我建议使用 while 循环。

例如:

Scanner reader = new Scanner (System.in);
int computerScore = 0, playerScore = 0;

int rock = 1;
int paper = 2;
int scissors = 3;
int numberOfPlayerTurns = 0;

final int MAX_PLAYER_TURNS = 5;
while (numberOfPlayerTurns < MAX_PLAYER_TURNS)
{
    int computer = (int) (Math.random() * 3) + 1;
    int player = reader.nextInt();
    System.out.println("Enter 1 for Rock, 2 for Paper, 3 for Scissors");

    // invalid
    if (player > scissors || player <= 0)
    {
        System.out.println("Not a valid response");
    }
    else
    {
        numberOfPlayerTurns++;

        if (player == computer) 
        {
            System.out.println("Tie");
        }
        else if (player == rock ) 
        {
            if(computer == paper)
            {
                System.out.println ("Player picked Rock, Computer picked Paper, Computer wins");
                computerScore++;
            }    
            else
            {
                System.out.println ("Player picked Rock, Computer picked Scissors, Player wins");
                playerScore++;
            }
        }
        else if (player == paper) 
        {
            if(computer == rock)
            {
                System.out.println ("Player picked Paper, Computer picked Rock , Player wins");
                playerScore++;
            }
            else
            {
                System.out.println ("Player picked Paper, Computer picked Scissors, Computer wins");
                 computerScore++;
            }
        }
        // scissors
        else
        {
            if(computer == rock)
            {
                System.out.println ("Player picked Scissors, Computer picked Rock , Computer wins");
                computerScore++;
            }    
            else
            {
                System.out.println ("Player picked Scissors, Computer picked Paper, Player wins");
                playerScore++;
            }
        }
    }
}
System.out.println("");
System.out.println("Computer Wins " + computerScore);
System.out.println("Player Wins " + playerScore);

推荐阅读