java - 将扫描器与字符串进行比较

标签 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
    }
}

最佳答案

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

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

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

关于java - 将扫描器与字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15018745/

相关文章:

java - 为什么这种比较方法违反了它的一般契约呢?

matlab - 如何创建比较两个矩阵的误差函数?

java - HTML 表单提交不适用于 Spring Boot 2.3.1

Java 游戏无法在第二台显示器上呈现

java - 重用类实例而不重新创建它们

java - Java中BigDecimal转Double时什么时候出现 "data loss"

java - String.replaceAll() 与正则表达式问题

c - 查找字符串中重复的单词和它们之间的符号

javascript - 需要解释为什么 "1"- -"1"表达式返回 2?

c++ - 如何为第二个值 "double"订购 set< pair< pair<int, int>, double >> ?