0

我试图让用户输入一个字符(“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
    }
}
4

3 回答 3

4

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

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

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

于 2013-02-22T07:13:55.237 回答
0

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

于 2013-02-22T07:14:25.090 回答
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
    }
}
于 2013-02-22T07:18:35.893 回答