2017-02-25 79 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。