2017-02-25 94 views
-4

我正在创建一个Rock Paper Scissor程序。最后,我希望它能确定所有比赛的胜利者。无论谁拥有最高分数,它总是打印出“玩家1击败玩家2和我”。我的错误在哪里,我应该如何纠正它?一系列岩石纸剪刀游戏的总体赢家

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 
+0

为什么这会被搁置为“正在广泛”或“好的答案将会延长这种格式”。我已经得到了我的答案,因为我编辑了问题 - 解决 - –

回答

1

你的条件应该是

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中的语句是 “& &” 而不是“& “, 您的条件检查也是错误的

+0

非常感谢。所以如果我不得不向某人解释这件事,那么它必须是一种双重比较: –

+0

您必须将win1与win2和compWin进行比较,然后比较两者的比较结果。 –

1
if (win1 > (win2 & compWin)) 

这应该是

if (win1 > win2 && win1 > compWin) 

而且同样的事情为else if

逻辑AND运算符是&&&是一个按位与,这是一个完全不同的操作。这是一种先进的功能,您现在还不会使用它。

你写的是一个常见的错误,将英文直接翻译成代码不起作用。 &&||与英语中的“and”和“or”完全不一样。

(顺便说一下,在语法上应该说 “PLAYER1打Player2和我。”)

+0

非常感谢。因此,如果我必须解释这一点,它必须是一个双重比较放在一个条件? –

0

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

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;否则返回false。