2012-08-03 96 views
0

這段代碼從來不打印,無論我贏了,輸了,還是它是一條領帶,我都搞不清楚。我知道他的選擇和哪個選擇都正確設置,但ifs似乎不工作。我是否錯誤地使用了字符串,還是我將它們比較錯了?我是Java的新手,所以我不確定我做錯了什麼。掃描輸入的字符串

import java.util.Scanner; 
import java.util.Random; 
public class rps { 

public static void main(String[] args) { 
    int oppchoice; 
    String hischoice = ""; 
    String whichpick; 
    String rock = "rock"; 
    String paper = "paper"; 
    String scissors = "scissors"; 
    Scanner mS = new Scanner(System.in); 
    Random mR = new Random(); 

    System.out.print("Type your choice (rock/paper/scissors): "); 
    whichpick = mS.nextLine(); 

    oppchoice = mR.nextInt(3) + 1; 
    if (oppchoice == 1) { 
     hischoice = rock; 
    } 
    if (oppchoice == 2) { 
     hischoice = paper; 
    } 
    if (oppchoice == 3) { 
     hischoice = scissors; 
    } 
    System.out.println(hischoice); 

    if ((hischoice == rock) && (whichpick == paper)) { 
     System.out.println("You win! :)"); 
    } 
    if ((hischoice == paper) && (whichpick == scissors)) { 
     System.out.println("You win! :)"); 
    } 
    if ((hischoice == scissors) && (whichpick == rock)) { 
     System.out.println("You win! :)"); 
    } 
    if ((hischoice == rock) && (whichpick == scissors)) { 
     System.out.println("You lose! :("); 
    } 
    if ((hischoice == paper) && (whichpick == rock)) { 
     System.out.println("You lose! :("); 
    } 
    if ((hischoice == scissors) && (whichpick == paper)) { 
     System.out.println("You lose! :("); 
    } 
    if ((hischoice == rock) && (whichpick == rock)) { 
     System.out.println("It's a tie! :|"); 
    } 
    if ((hischoice == scissors) && (whichpick == scissors)) { 
     System.out.println("It's a tie! :|"); 
    } 
    if ((hischoice == paper) && (whichpick == paper)) { 
     System.out.println("It's a tie! :|"); 
    } 
} 

}

回答

0

您應該使用.equals()用於字符串比較

+0

http://stackoverflow.com/問題/ 513832 /怎麼辦 - 我 - 比較 - 串式的Java – baraber 2012-08-03 00:14:20

2

==運營商檢查是否兩個對象是完全一樣的對象。兩個字符串是不同的對象,但具有相同的值(在它們中具有完全相同的字符)。因此,請使用.equals()方法來比較字符串是否相等,或者使用.compareTo()方法來測試不等比較。在這種情況下,使用.equals()更容易。

因此,這裏是如何應該做

if ((hischoice.equals(rock)) && (whichpick.equals(rock))) { 
     System.out.println("It's a tie! :|"); 
    } 
1

答案的其餘部分是正確的,你需要使用equals方法來比較兩個字符串對象或任何其他對象。

我還建議這些if語句您可以壓縮成1 從它應該是什麼如下:

if ((hischoice.equals(rock)) && (whichpick.equals(rock))) { 
     System.out.println("It's a tie! :|"); 
    } 
    if ((hischoice.equals(scissors)) && (whichpick.equals(scissors))) { 
     System.out.println("It's a tie! :|"); 
    } 
    if((hischoice.equals(paper)) && (whichpick.equals(paper))){ 
     System.out.println("It's a tie! :|"); 
    } 

以下幾點:

if (hischoice.equals(whichpick)) { 
    System.out.println("It's a tie! :|"); 
}