我在java中有一个简单的代码,总是返回"Game over."
。
import java.util.Scanner;
public class nextQuestion {
public void newQuestion() {
Scanner choice2 = new Scanner(System.in);
System.out.println("What is my name?");
System.out.println("A. Mark");
System.out.println("B. Robert");
System.out.println("C. Mio");
System.out.println("D. Samantha");
String answer2 = choice2.nextLine();
if(answer2 == "a" || answer2 == "A") {
System.out.println("Game over.");
System.exit(0);
} else if(answer2 == "b" || answer2 == "B") {
System.out.println("Nice guess!");
System.exit(0);
} else if(answer2 == "c" || answer2 == "C") {
System.out.println("Game over.");
System.exit(0);
} else if(answer2 == "d" || answer2 == "D") {
System.out.println("Game over.");
System.exit(0);
} else {
System.out.println("Game over.");
System.exit(0);
}
}
}
但是,如果我使用switch语句,它确实有效。这有什么问题?
答案 0 :(得分:2)
不要使用"=="
来比较不可行的字符串,你应该使用
if answer2.equals("a")
==
测试引用相等性。
.equals()
测试价值平等。
因此,如果您确实想要测试两个字符串是否具有相同的值,则应使用.equals()。但是,在某些情况下,由于String interning,您可以保证具有相同值的两个字符串将由同一对象表示。这些情况由Java语言规范指定。 ==
用于测试两个字符串是否是同一个对象