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")) {
    ...
}

2つのオペランドがまったく同じ文字列オブジェクトを参照しているかどうかを比較するため、通常は(この場合を含めて)文字列をと比較しないでください。これらが等しいオブジェクトを参照しているかどうかだけに関心があります。(詳細については、この質問を参照してください。)==

于 2013-02-22T07:13:55.237 に答える
0

最初にスキャナーから文字列を取得する必要があると思います(おそらく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 に答える