石头剪刀。JAVA方法

石头剪刀。JAVA方法,java,methods,Java,Methods,我假设这是一个逻辑错误。我无法计算结果,也无法得到正确的结果。每次我进入石头、布、剪刀,它就会从那里决定我是赢了、输了还是平局。我的代码有什么问题 public class RockPaperScissors { public static void displayGreeting() { String intro = "This program is a game. A game of Rock, Paper, Scissors\n"

我假设这是一个逻辑错误。我无法计算结果,也无法得到正确的结果。每次我进入石头、布、剪刀,它就会从那里决定我是赢了、输了还是平局。我的代码有什么问题

public class RockPaperScissors {

        public static void displayGreeting()
        {
            String intro = "This program is a game.  A game of Rock, Paper, Scissors\n"+
                           "It is you against the computer.  Rock beats scissors, Paper\n"+
                           " beats rock, and scissors beats paper.  Good luck and may the\n"+
                           "odds be ever in your favor.";
            JOptionPane.showMessageDialog(null, intro, "Rock Paper Scissors",1);
        }

        public static String generateComputersChoice()
        {
            Random randomGenrator = new Random();
            int randomNumber = randomGenrator.nextInt(3);

            String weapon = "nothing";
            switch(randomNumber){
            case 0: weapon = "rock";
                break;
            case 1: weapon = "paper";
                break;
            case 2: weapon = "scissors";
                break;
            }
            return weapon;
            }

        public static String enterPlayersChoice(){

            String prompt = "You have a choice of picking rock, paper, or scissors.\n"+
                            "Choose wisely.";

            String input = "";

            input = JOptionPane.showInputDialog(null,prompt,"Choose your weapon",1);
            String inputLower = input.toLowerCase();
            return inputLower;

        }

        public static void main(String[] args)
        {
            displayGreeting();
          // generateComputersChoice();
           //enterPlayersChoice();
           // JOptionPane.showMessageDialog(null,generateComputersChoice()+ enterPlayersChoice(5));

            String player = enterPlayersChoice();
            String comp = generateComputersChoice();

            int ties = 0;
            int playerWins = 0;
            int compWins = 0;

            for(int i = 0; i < 3; i ++){



                //enterPlayersChoice(); //method

                //generateComputersChoice();  //method
                //JOptionPane.showMessageDialog(null,generateComputersChoice()+ enterPlayersChoice(1));

                //System.out.println(player+ " " + comp);
                //JOptionPane.showMessageDialog(null,player+ " " +comp);

                if(player.equals(comp)){
                    JOptionPane.showMessageDialog(null, "It's a tie!");
                    ties ++;

                }
                else if(player.equals("rock")){
                    if(comp.equals("scissors")){
                        JOptionPane.showMessageDialog(null, "You win!");
                        playerWins ++;

                    }
                }else if(comp.equals("rock")){
                    if(player.equals("scissors")){
                        JOptionPane.showMessageDialog(null, "You lose!");
                        compWins ++;

                    }
                }else if(player.equals("scissors")){
                    if(comp.equals("paper")){
                        JOptionPane.showMessageDialog(null, "You win!");
                        playerWins ++;

                    }
                }else if(comp.equals("scissors")){
                    if(player.equals("paper")){
                        JOptionPane.showMessageDialog(null, "You lose");
                        compWins ++;

                    }
                }else if(player.equals("paper")){
                    if(comp.equals("rock")){
                        JOptionPane.showMessageDialog(null, "You Win!");
                        playerWins ++;
                    }
                }else if(comp.equals("paper")){
                    if(player.equals("rock")){
                        JOptionPane.showMessageDialog(null, "You lose!");
                        compWins ++;
                    }
                }else{
                    JOptionPane.showMessageDialog(null, "Invalid user input");
                    i--;
                }


            }
          //Results
            JOptionPane.showMessageDialog(null,"Here are the results\n\n"+
                                               "\nTies: " +ties+
                                               "\nComputer Wins: " +compWins+
                                               "\nPlayer Wins: " + playerWins+
                                               "\n\n Program Terminating", "Results",1);


      }

     }
公共级岩石剪刀{
公共静态void displayGreeting()
{
String intro=“这个程序是一个游戏。一个石头、布、剪刀的游戏\n”+
是你对抗计算机。石头胜过剪刀、布\n+
“比石头强,剪刀比布强。祝你好运,祝你好运\n”+
“机会永远对你有利。”;
showMessageDialog(null,简介,“石头剪刀”,1);
}
公共静态字符串generateComputersChoice()
{
Random Randomgenerator=新的Random();
int randomNumber=randomGenerator.nextInt(3);
字符串武器=“无”;
开关(随机数){
案例0:武器=“岩石”;
打破
案例1:武器=“纸张”;
打破
案例2:武器=“剪刀”;
打破
}
返回武器;
}
公共静态字符串enterPlayersChoice(){
String prompt=“您可以选择拾取石头、布或剪刀。\n”+
“明智地选择。”;
字符串输入=”;
input=JOptionPane.showInputDialog(空,提示“选择你的武器”,1);
String inputLower=input.toLowerCase();
返回输入降低;
}
公共静态void main(字符串[]args)
{
显示问候语();
//generateComputersChoice();
//enterPlayersChoice();
//showMessageDialog(null,generateComputersChoice()+enterPlayersChoice(5));
字符串播放器=enterPlayersChoice();
字符串comp=generateComputersChoice();
int=0;
int playerWins=0;
int=0;
对于(int i=0;i<3;i++){
//EnterPlayerChoice();//方法
//generateComputersChoice();//方法
//showMessageDialog(null,generateComputersChoice()+enterPlayersChoice(1));
//System.out.println(播放器+“”+comp);
//JOptionPane.showMessageDialog(空,播放器+“”+comp);
if(玩家相等(comp)){
showMessageDialog(null,“这是一个平局!”);
ties++;
}
else if(玩家相等(“摇滚”)){
如果(复合等于(“剪刀”)){
showMessageDialog(null,“您赢了!”);
playerWins++;
}
}否则,如果(成分等于(“岩石”)){
如果(玩家相等(“剪刀”)){
showMessageDialog(null,“你输了!”);
compWins++;
}
}否则如果(玩家相等(“剪刀”)){
如果(复合等于(“纸张”)){
showMessageDialog(null,“您赢了!”);
playerWins++;
}
}否则,如果(复合等于(“剪刀”)){
如果(玩家相等(“纸张”)){
showMessageDialog(null,“您丢失”);
compWins++;
}
}else if(玩家相等(“纸张”)){
如果(成分等于(“岩石”)){
showMessageDialog(null,“您赢了!”);
playerWins++;
}
}否则,如果(复合等于(“纸张”)){
如果(玩家相等(“摇滚”)){
showMessageDialog(null,“你输了!”);
compWins++;
}
}否则{
showMessageDialog(null,“无效用户输入”);
我--;
}
}
//结果
JOptionPane.showMessageDialog(null,“以下是结果\n\n”+
“\nTies:”+ties+
“\n计算机获胜:”+compWins+
“\n玩家赢:”+玩家赢+
“\n\n程序终止”,“结果”,1);
}
}

每次通过循环,您都会重新生成用户和计算机的选择。 移动


进入循环,否则所有3次都是相同的

每次通过循环都会重新生成用户和计算机的选择。 移动


进入循环,否则所有3次都是相同的

每次通过循环都会重新生成用户和计算机的选择。 移动


进入循环,否则所有3次都是相同的

每次通过循环都会重新生成用户和计算机的选择。 移动

进入循环,否则3次都相同

然后它决定我是赢了,平局还是输了,但它不会 “重申”之后。在那之后,它只是说我要么赢了,要么输了, 或者连续三次打成平局

实际上,您所做的是询问输入一次,然后运行循环,因此很明显,您将得到相同的结果3次

您需要在每次迭代时询问用户输入:

        String player;
        String comp;

        int ties = 0;
        int playerWins = 0;
        int compWins = 0;

        for(int i = 0; i < 3; i ++){
            player = enterPlayersChoice();
            comp = generateComputersChoice();
            /**/
        }
String播放器;
字符串comp;
int=0;
int playerWins=0;
int=0;
对于(int i=0;i<3;i++){
player=enterPlayersChoice();
comp=generateComputersChoice();
/**/
}
然后它决定我是赢了,平局还是输了,但它不会 “再
        String player;
        String comp;

        int ties = 0;
        int playerWins = 0;
        int compWins = 0;

        for(int i = 0; i < 3; i ++){
            player = enterPlayersChoice();
            comp = generateComputersChoice();
            /**/
        }
String player = enterPlayersChoice();
String comp = generateComputersChoice();
else if(player.equals("rock")){
   if(comp.equals("scissors")){
       JOptionPane.showMessageDialog(null, "You win!");
        playerWins ++;
}
else if (player.equals("rock") && comp.equals("scissors")){