2014-04-24 141 views
0

開始我對編程還很陌生。我的任務是做一個沒有陣列的岩石剪刀程序。根據我們以前的選擇,該計劃將選擇相應的武器。在節目結束時,如果用戶不想繼續,我們會顯示他們的總分數。所有這一切都應該是我們在我們主要內部調用的另一種方法。爲什麼我的程序不顯示正確的輸出?

正如我前面所說的,我對編程非常陌生,所以在數組之外,如果其他語句是我知道如何做到這一點的唯一方法(以及大量的EM)。

import java.util.Scanner; 

public class ASSIGNMENT 
{ 
    public static void main (String [] args) 
    { 
    game(); 

    }//end main 

    public static void game() 
    { 
    Scanner kb = new Scanner(System.in); 

    //assigning variables 
    int rock = 1; 
    int scissors = 2; 
    int paper = 3; 
    int weaponAI = 0; 
    int weaponP = 0; 
    int wins = 0; 
    int losses = 0; 
    int ties = 0; 
    int rockNum = 0; 
    int scissorsNum = 0; 
    int paperNum = 0; 
    String yorn; 

    do 
    { 
     //generate random numbe to decide weapon 
     double weaponNum = (Math.random() * 3)+ 1; 
     System.out.println(weaponNum); 
     if (weaponNum >= 1 && weaponNum < 2) 
     { 
      if (rockNum > scissorsNum && rockNum > paperNum) 
       weaponAI = paper; 
      else if (paperNum > scissorsNum && paperNum > rockNum) 
       weaponAI = scissors; 
      else 
       weaponAI = rock; 
     } 
     else if (weaponNum >= 2 && weaponNum < 3) 
     { 
      if (scissorsNum > rockNum && scissorsNum > paperNum) 
       weaponAI = rock; 
      else if (paperNum > scissorsNum && paperNum > rockNum) 
       weaponAI = scissors; 
      else 
       weaponAI = paper; 
     } 
     else if (weaponNum >= 3) 
     { 
      if (scissorsNum > rockNum && scissorsNum > paperNum) 
       weaponAI = rock; 
      else if (rockNum > scissorsNum && rockNum > paperNum) 
       weaponAI = paper; 
      else 
       weaponAI = scissors; 
     } 
     //prompting for guess and assigning 
     System.out.println("BATTLE START!"); 
     System.out.println("Choose your weapon: "); 
     String weaponStr = kb.nextLine(); 
     if (weaponStr == "Rock" || weaponStr == "rock") 
     { 
      weaponP = rock; 
      ++rockNum; 
     } 
     else if (weaponStr == "Scissors" || weaponStr == "scissors") 
     { 
      weaponP = scissors; 
      ++scissorsNum; 
     } 
     else if (weaponStr == "Paper" || weaponStr == "paper") 
     { 
      weaponP = paper; 
      ++paperNum; 
     } 
     else if (weaponStr =="quit" || weaponStr == "Quit") 
      System.exit(-1); 

     //comparing AI and Players weapon 
     //tied 
     if (weaponAI == rock && weaponP == rock) 
     { 
      System.out.println("You both chose rock"); 
      ++ties; 
     } 
     else if (weaponAI == paper && weaponP == paper) 
     { 
      System.out.println("You both chose paper"); 
      ++ties; 
     } 
     else if (weaponAI == scissors && weaponP == scissors) 
     { 
      ++ties; 
      System.out.println("You both chose scissors"); 
     } 
     //AI wins 
     else if (weaponAI == rock && weaponP == scissors) 
     { 
      ++losses; 
      System.out.println("AI wins"); 
     } 
     else if (weaponAI == paper && weaponP == rock) 
     { 
      ++losses; 
      System.out.println("AI wins"); 
     } 
     else if (weaponAI == scissors && weaponP == paper) 
     { 
      ++losses; 
      System.out.println("AI wins"); 
     } 
     //Player wins 
     else if (weaponAI == scissors && weaponP == rock) 
     { 
      ++wins; 
      System.out.println("You win!"); 
     } 
     else if (weaponAI == rock && weaponP == paper) 
     { 
      ++wins; 
      System.out.println("You win!"); 
     } 
     else if (weaponAI == paper && weaponP == scissors) 
     { 
      ++wins; 
      System.out.println("You win!"); 
     } 
     //prompting user to play again 
     System.out.println("Would you like to play again? Y or N?"); 
     yorn = kb.nextLine(); 

    }//end do 
    while (yorn == "y" || yorn == "Y" || yorn == "Yes" || yorn == "yes"); 

    //Displaying scores 
    System.out.println("Game over."); 
    System.out.println("You had " + wins + " wins."); 
    System.out.println("You had " + losses + " losses."); 
    System.out.println("You had " + ties + " ties."); 
    System.out.println("You chose rock " + rockNum + " times."); 
    System.out.println("You chose paper " + paperNum + " times."); 
    System.out.println("You chose scissors " + scissorsNum + " times."); 

    }//end game 
}//end class 

我不確定爲什麼我的輸出如下,當我進入 「搖滾」 和 「y」

1.5102368482522261

BATTLE開始!

選擇你的武器:

岩石

你想再次發揮? Y或N?

y

遊戲結束。

您有0次勝利。

你有0點損失。

您已經有0條關於。

您選擇了搖滾0次。

您選擇紙張0次。

您選擇了剪刀0次。

這幾乎就像程序忽略了所有if else語句。我相信這是簡單的東西,我不理解...

+1

除了別的,你還應該強烈考慮查看'enum's,因爲它們更適合這個。枚舉將允許您將「什麼是什麼」的邏輯放在一個地方,從用戶交互中分離出來。 –

+0

這就像今天我用過的「在java中比較字符串」的第5個標誌... – csmckelvey

回答

1

爲了比較String內容,您必須將==替換爲equalsIgnoreCase()

您無法將兩個字符串內容==運算符進行比較。該==操作者在Java中比較字符串引用(如果一個對象是一些作爲另一個)

爲您的代碼工作,你需要這樣的東西:

if (weaponStr.equalsIgnoreCase("Rock")){ 
    ... 
} 

要查看字符串比較是如何在Java中你做還可以看到:

+0

那麼你*可以*,但它會比較字符串引用而不是它們的內容。 –

+0

@JonSkeet當然你可以,但據我瞭解用戶想比較字符串內容 – MaVRoSCy

+1

對,所以讓你的答案說。 「你不能使用'=='運算符來比較字符串內容;它只比較兩個字符串*引用*是否相等,即它們是否引用同一個對象。」 IMO更準確,更有幫助。 –

相關問題