我正在尝试让用户输入一个字符(“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
}
}
答案 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
}
}