将扫描仪与字符串进行比较

时间:2013-02-22 07:10:19

标签: java string compare

我正在尝试让用户输入一个字符(“y”/“n”)并检查这是否是正确的答案。我收到以下错误:“无法比拟的类型:java.util.Scanner和java.lang.String”

Scanner userInput = new Scanner(System.in);

System.out.printf("Is this word spelled correctly?: %s", wordToCheck);
        rightCheck(userInput);

public boolean rightCheck(Scanner usersAnswer)
{
    if(usersAnswer == "y")
    {
        //"Correct!"
        //Increment User's Score
    }
    else
    {
        //"Incorrect"
        //Decrement User's Score
    }
}

3 个答案:

答案 0 :(得分:4)

是的,因为扫描程序是获取输入的方式而不是值本身。您想从输入中获取下一个值,然后进行比较。像这样:

String answer = scanner.next();
if (answer.equals("y")) {
    ...
} else if (answer.equals("n")) {
    ...
}

请注意,您通常应该(包括这种情况)将字符串与==进行比较,因为它会比较两个操作数是否指向完全相同的字符串对象 - 您只对此感兴趣他们是否引用相等的对象。 (有关详细信息,请参阅this question。)

答案 1 :(得分:0)

我相信你应该首先从Scanner获取String(通过next()可能吗?)。然后在你的方法中,不要使用“==”作为字符串比较器。

答案 2 :(得分:0)

我修改了你的代码,没有测试过,但它应该可以工作:

 Scanner userInput = new Scanner(System.in);

System.out.println("Is this word spelled correctly?:" + wordToCheck);
        rightCheck(userInput.next());//send the string rather than the scanner

public boolean rightCheck(String usersAnswer)//convert the parameter type to String
{
    if(usersAnswer == "y")
    {
        //"Correct!"
        //Increment User's Score
    }
    else
    {
        //"Incorrect"
        //Decrement User's Score
    }
}