Java 一系列石头剪纸游戏的总冠军

Java 一系列石头剪纸游戏的总冠军,java,Java,我正在创建一个石头剪纸程序。最后,我希望它能决定所有比赛的胜利者。它总是打印出Player1击败Player2和我,不管谁得分最高。我的错误在哪里?我应该如何纠正 import java.util.Scanner; import java.util.Random; public class RPS2Player{ public static void main(String[]args){ int onePlay, computerPlay, twoPlay, game =

我正在创建一个石头剪纸程序。最后,我希望它能决定所有比赛的胜利者。它总是打印出Player1击败Player2和我,不管谁得分最高。我的错误在哪里?我应该如何纠正

import java.util.Scanner;
import java.util.Random;

public class RPS2Player{
   public static void main(String[]args){
      int onePlay, computerPlay, twoPlay, game = 0, win1 = 0, win2 = 0, compWin = 0, lose1 = 0, lose2 = 0, compLose = 0, playChoice;

      //instantiate objects Scanner and Random
      Scanner UI = new Scanner(System.in);
      Random num = new Random();

      //Get user input: Rock = 0, Paper = 1, Scissors = 2
      System.out.println("Hello! would you like to play Rock, Paper, Scissors? 0=yes, 1=no");
      playChoice = UI.nextInt(2);
      while (playChoice == 0){
         game++;
         System.out.println("Round " + game);
         System.out.println("Player1, choose 0=Rock, 1=Paper, 2=Scissors");
            onePlay = UI.nextInt(3);
         System.out.println();
         System.out.println();
         System.out.println();
         System.out.println();
         System.out.println();
         System.out.println();
         System.out.println("Player2, choose =Rock, 1=Paper, 2=Scissors");
            twoPlay = UI.nextInt(3);

         //get computer generated input: 0, 1, 2
         computerPlay = num.nextInt(3);//defines a random choice of 0, 1, or 2

         switch(onePlay){
            case 0: System.out.println("Player1 chose Rock"); break;
            case 1: System.out.println("Player1 chose Paper"); break;
            case 2: System.out.println("Player1 chose Scissors"); break;
         }//end switch statement for onePlay

         switch (twoPlay){
            case 0: System.out.println("Player2 chose Rock"); break;
            case 1: System.out.println("Player2 chose Paper"); break;
            case 2: System.out.println("Player2 chose Scissors"); break;
         }//end switch statement for twoPlay

         switch(computerPlay){
            case 0: System.out.println("I chose Rock"); break;
            case 1: System.out.println("I chose Paper"); break;
            case 2: System.out.println("I chose Scissors"); break;
         }//end switch statement for computerPlay

         //comparisons Player1 vs computer
         if (onePlay == 0){//Rock
            if (computerPlay == 0){
               System.out.println("Player 1 and I tie!"); 
               //computer chose rock - tie game
            }
            if (computerPlay == 1){ 
               System.out.println("I beat Player1!");
               lose1++;
               compWin++;//computer chose paper - computer wins
            }
            if (computerPlay == 2){
               System.out.println("Player1 beat me!"); 
               compLose++;
               win1++;//computer chose scissors - player wins
            }
         }//end if statements for onePlay = 0 (Rock)

         if (onePlay == 1){//Paper
            if (computerPlay == 0){
               System.out.println("Player1 beat me!"); 
               compLose++;
               win1++;//computer chose rock - player win1s
            }
            if (computerPlay == 1){
               System.out.println("Player1 and I tie!"); 
               // computer chose paper - tie game
            }
            if (computerPlay ==2){
               System.out.println("I beat Player 1!"); 
               lose1++;
               compWin++;//computer chose scissor - computer win1s
            }
         }//end if statements for onePlay = 1 (Paper)

         if (onePlay == 2){//Scissors
            if (computerPlay == 0){
               System.out.println("I beat Player1!"); 
               lose1++;
               compWin++;//computer chose rock - computer wins
            }
            if (computerPlay == 1){
               System.out.println("Player1 beat me!");
               compLose++;
               win1++;//computer chose paper - play wins
            }
            if (computerPlay == 2){
               System.out.println("Player1 and I tie!"); 
               //computer chose scissors - tie game
            }
         }//end if statements for onePlay = 2 (Scissors)
         //end comparisons Player1 vs computer

         //comparisons Player2 vs computer
         if (twoPlay == 0){//Rock
            if (computerPlay == 0){
               System.out.println("Player2 and I tie!"); 
               //computer chose rock - tie game
            }
            if (computerPlay == 1){ 
               System.out.println("I beat Player2!"); 
               lose2++;
               compWin++;//computer chose paper - computer wins
            }
            if (computerPlay == 2){
               System.out.println("Player2 beat me!"); 
               compLose++;
               win2++;//computer chose scissors - player2 wins
            }
         }//end if statements for twoPlay = 0 (Rock)

         if (twoPlay == 1){//Paper
            if (computerPlay == 0){
               System.out.println("Player2 beat me!"); 
               compLose++;
               win2++;//computer chose rock - player wins
            }
            if (computerPlay == 1){
               System.out.println("Player2 and I tie!"); 
               // computer chose paper - tie game
            }
            if (computerPlay ==2){
               System.out.println("I beat Player2!"); 
               lose2++;
               compWin++;//computer chose scissor - computer wins
            }
         }//end if statements for twoPlay = 1 (Paper)

         if (twoPlay == 2){//Scissors
            if (computerPlay == 0){
               System.out.println("I beat Player2!"); 
               lose2++;
               compWin++;//computer chose rock - computer wins
            }
            if (computerPlay == 1){
               System.out.println("Player2 beat me!");
               compLose++;
               win2++;//computer chose paper - player2 wins
            }
            if (computerPlay == 2){
               System.out.println("Player2 and I tie!"); 
               //computer chose scissors - tie game
            }
         }//end if statements for twoPlay = 2 (Scissors)
         //end comparisons Player2 vs computer

         //comparison Player1 vs Player2
         if (onePlay == 0){//Rock
            if (twoPlay == 0){
               System.out.println("Player1 and Player2 tie!"); 
               //Player2 chose rock - tie game
            }
            if (twoPlay == 1){ 
               System.out.println("Player2 beat Player1!"); 
               lose1++;
               win2++;//Player2 chose paper - Player2 wins
            }
            if (twoPlay == 2){
               System.out.println("Player1 beat Player2!"); 
               lose2++;
               win1++;//Player2 chose scissors - player1 wins
            }
         }//end if statements for personPlay = 0 (Rock)

         if (onePlay == 1){//Paper
            if (twoPlay == 0){
               System.out.println("Player1 beat Player2!"); 
               lose2++;
               win1++;//computer chose rock - player wins
            }
            if (twoPlay == 1){
               System.out.println("Player1 and Player2 tie!"); 
               // computer chose paper - tie game
            }
            if (twoPlay ==2){
               System.out.println("Player2 beat Player1!"); 
               lose1++;
               win2++;//player2 chose scissor - player2 wins
            }
         }//end if statements for personPlay = 1 (Paper)

         if (onePlay == 2){//Scissors
            if (twoPlay == 0){
               System.out.println("Player2 beat Player1!"); 
               lose1++;
               win2++;//Player2 chose rock - player2 wins
            }
            if (twoPlay == 1){
               System.out.println("Player1 beat Player2!");
               lose2++;
               win1++;//player2 chose paper - player1 wins
            }
            if (twoPlay == 2){
               System.out.println("Player1 and Player2 tie!"); 
               //player2 chose scissors - tie game
            }
         }//end if statements for personPlay = 2 (Scissors)
         //end //comparisons Player1 vs Player2
         System.out.println("Would you like to play again? 0=yes, 1=no");
         playChoice = UI.nextInt(2);
      }//end while loop for play

      //user decides not to play or decides to stop playing - Stats are given
      if (playChoice == 1){
         System.out.println("Ok let's play (again) sometime.");//game ended
         System.out.println();
         System.out.println("We played " + game + " games.");//number of games played
         System.out.println("Player1 won " + win1 + " games, lost " + compWin + " games.");//Player1 wins and losses
         System.out.println("Player2 won " + win2 + " games, lost " + lose2 + " games.");//Player2 wins and losses
         System.out.println("I won " + compWin + " games and lost " + compLose + " games.");//computers wins and losses
         System.out.print("In terms of wins, ");

      //determine best player
      System.out.println("Across all games played, ");
      if (win1 > (win2 & compWin)){
         System.out.println("Player1 beat Player2 and I!");
      }   
      else if (win2 > (win1 & compWin)){
         System.out.println("Player2 beat Player1 and I!");
      }   
      else 
         System.out.println("I beat Player1 and Player2!");

      }//end while loop
   }//end method
}//end program
这应该是

if (win1 > win2 && win1 > compWin)
if ((win1 > win2) && (win1 > compWin)){
     System.out.println("Player1 beat Player2 and I!");
  }   
  else if ((win2 > win1) && (win2 > compWin)){
     System.out.println("Player2 beat Player1 and I!");
  }   
  else 
     System.out.println("I beat Player1 and Player2!");

  }
对于else if也是一样的

逻辑AND运算符为&&是一个按位AND,这是一个完全不同的操作。这是一种您目前还不会使用的高级功能

你写的是一个常见的错误,把英语直接翻译成代码是行不通的和| |与英语中的and或do不太一样


顺便说一下,语法上应该是Player1击败Player2和我。

你的条件应该是

if (win1 > win2 && win1 > compWin)
if ((win1 > win2) && (win1 > compWin)){
     System.out.println("Player1 beat Player2 and I!");
  }   
  else if ((win2 > win1) && (win2 > compWin)){
     System.out.println("Player2 beat Player1 and I!");
  }   
  else 
     System.out.println("I beat Player1 and Player2!");

  }
因为java中的AND语句是&&不是&,
此外,您的条件检查错误

您在比较中使用了位运算符。我认为这不是你的本意

if (win1 > (win2 & compWin)){
   // if win2 = 14 and compWin = 9
   //     9 (base 10) = 00000000000000000000000000001001 (base 2)
   //    14 (base 10) = 00000000000000000000000000001110 (base 2)
   //            --------------------------------
   //14 & 9 (base 10) = 00000000000000000000000000001000 (base 2) = 8 (base 10)
   // if win2 = 14 and compWin = 0; 14 & 0 = 0
   System.out.println("Player1 beat Player2 and I!");
}
我想您是想使用逻辑&&运算符比较win1、win2和compWin

// Should be:
if(win1 > win2 && win1 > compWin) {
   System.out.println("Player1 beat Player2 and I!");
}
else if (win2 > win1 && win2 > compWin)){
   System.out.println("Player2 beat Player1 and I!");
}   
else 
   System.out.println("I beat Player1 and Player2!");
}

使用&&或| |的逻辑表达式在一侧求值,然后在另一侧求值。如果左侧为true,&&右侧为true,则返回true;否则返回false。

非常感谢。所以如果我要解释的话,这一定是一个双重比较,放在一个条件下,非常感谢。因此,如果我必须向某人解释这一点,那么这一定是一个双重比较。你必须将win1与win2和compWin进行比较,然后比较这两种比较的结果。为什么这一比较会因为过于宽泛或好而搁置?对于这种格式,答案可能太长了。我已经得到了我的答案,因为我编辑的问题说-解决了-