2012-08-03 97 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! :|"); 
}