如何修复用Java编写的RockPaperScissors游戏?

时间:2017-02-24 01:54:53

标签: java

我试图为我的Java课程编写RockPaperScissors游戏,但我的代码遇到了问题。当它运行时,有时输出错误的东西,有时它是正确的。

例如,当用户输入P时,计算机应该用Tie,My Point或Your Point回答,然后在它下面会说出我们每个人玩的东西。但通常它会说一些像#34;你的观点!" " R击败R"。

import java.util.Scanner;
public class RockPaperScissors
{       
public static void main(String[] args) 
{
   Scanner input = new Scanner(System.in);

   int tie = 0;
   int win = 0;
   int loss = 0;

   String playerChoice;
   System.out.println(RockPaperScissors.getComputerChoice());

   while (true) 
    {
        System.out.println();
        System.out.print("(R)ock, (P)aper, (S)cissors, or quit: ");

        playerChoice = input.nextLine();


        if (playerChoice.equalsIgnoreCase("quit")) break;
        else            
               //switch statement

            if (playerChoice.equalsIgnoreCase(
                RockPaperScissors.getComputerChoice()))
            {
                System.out.println("Tie!");
                tie++;
            }

            else if ((playerChoice.equalsIgnoreCase("R") && 
                        RockPaperScissors.getComputerChoice().equals("S")) ||
                    (playerChoice.equalsIgnoreCase("P") && 
                        RockPaperScissors.getComputerChoice().equals("R")) ||
                    (playerChoice.equalsIgnoreCase("S") && 
                        RockPaperScissors.getComputerChoice().equals("P")))
            {
                System.out.println("Your Point!");
                System.out.println(playerChoice + " beats " 
                    + RockPaperScissors.getComputerChoice());
                win++;

            }

            else if ((playerChoice.equalsIgnoreCase("R") && 
                        RockPaperScissors.getComputerChoice().equals("P")) ||
                    (playerChoice.equalsIgnoreCase("P") && 
                        RockPaperScissors.getComputerChoice().equals("S")) ||
                    (playerChoice.equalsIgnoreCase("S") && 
                        RockPaperScissors.getComputerChoice().equals("")))
            {
                System.out.println("My Point!");
                System.out.println(RockPaperScissors.getComputerChoice() 
                    + " beats " + playerChoice);
                loss++;

            }

            else
            {
                System.out.println("Invalid Input!");

            }
    }
    System.out.println();
    System.out.println("You won " + win + " times.");
    System.out.println("You lost " + loss + " times.");
    System.out.println("We tied " + tie + " times.");
}


public static String getComputerChoice ()
{

    int compChoiceInt;
    String compChoice;
    compChoiceInt = (int) (Math.random() * 3);
    switch (compChoiceInt)
    {
        case 0:
            compChoice = "R";
            break;
        case 1:
            compChoice = "P";
            break;
        case 2:
            compChoice = "S";
            break;
        default:
            compChoice = "Invalid Input";
            System.out.println("Invalid Input.");
            break;
    }

    return compChoice;

}

0 个答案:

没有答案