扫描输入的字符串
问题描述:
这段代码从来不打印,无论我赢了,输了,还是它是一条领带,我都搞不清楚。我知道他的选择和哪个选择都正确设置,但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! :|");
}
}
}
答
您应该使用.equals()用于字符串比较
答
的==
运营商检查是否两个对象是完全一样的对象。两个字符串是不同的对象,但具有相同的值(在它们中具有完全相同的字符)。因此,请使用.equals()
方法来比较字符串是否相等,或者使用.compareTo()
方法来测试不等比较。在这种情况下,使用.equals()
更容易。
因此,这里是如何应该做
if ((hischoice.equals(rock)) && (whichpick.equals(rock))) {
System.out.println("It's a tie! :|");
}
答
答案的其余部分是正确的,你需要使用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! :|");
}
http://stackoverflow.com/问题/ 513832 /怎么办 - 我 - 比较 - 串式的Java – baraber 2012-08-03 00:14:20