Java如果不工作

时间:2015-06-15 12:12:12

标签: java

我在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语句,它确实有效。这有什么问题?

1 个答案:

答案 0 :(得分:2)

不要使用"=="来比较不可行的字符串,你应该使用 if answer2.equals("a") ==测试引用相等性。 .equals()测试价值平等。 因此,如果您确实想要测试两个字符串是否具有相同的值,则应使用.equals()。但是,在某些情况下,由于String interning,您可以保证具有相同值的两个字符串将由同一对象表示。这些情况由Java语言规范指定。 ==用于测试两个字符串是否是同一个对象