Scanner nextLine()似乎没有改变字符串

时间:2013-02-27 02:09:38

标签: java java.util.scanner

所以我的问题是我正在尝试制作一个非常简单的程序来刷新我糟糕的编码技巧,但是我遇到了一个我不明白的问题。该程序应该回答“是”并打印“yay”,只是为了检查它是否有效,但它不起作用。所以我想知道我做错了什么。

public class main {
    /**
     * @param args
     */
    public static void main(String[] args) {
        int playerTroops, computerTroops;
        String teamName, computerName = "Orcs", answer;
        Scanner listener = new Scanner(System.in);
        System.out
                .println("Welcome to the Battle Grounds, where you are responsible for winning a war \nAre you ready? \nYes or No");
        answer = listener.nextLine();

        if (answer == "Yes")
            System.out.println("Yayy");
        else
            System.out.println("Why");
    }
}

1 个答案:

答案 0 :(得分:4)

对于Java String比较,您必须使用.equals运算符:

if(answer.equals("Yes"))

如果你想忽略大小写,

if(answer.equalsIgnoreCase("Yes"))

在Java中,运算符==检查引用相等性。在正常情况下,相等的字符串不会自动具有相同的引用(I.E:它们是不同的对象。这种区别在Java中非常重要。)