Java 石头纸游戏循环次数过多

标签 java loops if-statement

我必须制作一个石头剪刀布游戏,你可以在其中与计算机对战。 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);

}

最佳答案

为了让事情变得更容易,我建议使用 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);

关于Java 石头纸游戏循环次数过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52211303/

相关文章:

python - 如何改进 Python 中的这个循环以提高速度

perl - 为什么 eq 不能处理我的字符串输入?

C++ - 如果循环内的语句无法正常工作

java - "Setter Injection with Map"如何实现

java - 如何在Java中引用方法或属性?

java - "Parent c = new Child()"和 "Child c = new Child()"有什么区别?

linux - 我在 unix 中 at 作业的输出中不断收到 'while syntax' 错误,我不知道为什么

c++ - for循环中的条件不执行

php - 避免使用面向对象设计的 if 语句,PHP

java - 如何强制 hibernate 在 session 关闭时不保存和数据更新?