一个方法不会进入if-else语句,但它会运行到那一点?

时间:2015-11-08 03:55:16

标签: java bluej

首先,我知道这可能已经回答了某些地方,但我似乎无法找到正确的条款来获得答案。另外,我对编码很新,而且很明显,所以这可能不是最好的书面'问题'。

快速背景故事:我正在BlueJ中编写一个排序游戏(我知道......很糟糕,但这就是我们在学校学到的东西),而且我正在创建一个方法来解决我需要的任何是/否问题。工作正常。起初,我遇到了一个问题,允许将用户输入保存为String,现在我遇到了if-else语句参数中使用的String的问题。这就是我现在所拥有的:

public void userAnswer(int method)                 //used for yes/no questions
{
    System.out.println("Please type 'y' for yes and 'n' for no.");
    String answer = keyboard.next();
    answer.toLowerCase();
    System.out.println(answer + "worked");
    if(answer == "y")
    {
        System.out.println("worked2");
        if(method == 0)
            completeOrNot();
        if(method == 1)
            usersMove(theArray);
    }
    else if(answer == "n")
    {
        System.out.println("worked3");
        System.out.print("\n");
    }
}

我完全不知道为什么它没有进入if-else语句。我测试它是否会打印字符串,它会,但它不会将它转换为小写。我只是不知道该怎么做。任何和所有的帮助将不胜感激!

3 个答案:

答案 0 :(得分:0)

在比较Java中的字符串时,请使用equals()方法。否则,如果使用==。

,则比较它们的内存位置
    "hi".equals("hello") returns False
    "hello".equals("hello") returns True

答案 1 :(得分:0)

不要使用==来比较字符串。使用equals:

answer.equals("y")

答案 2 :(得分:0)

Java中的字符串是对象 - 您需要使用equals方法评估相等,而不是==运算符以参考标识

if ("y".equals(answer)) {
    // code
} else if ("n".equals(answer)) {
    // code
}