3
import java.util.Scanner;

public class TrueFalseQuiz {

    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);
        String youranswer;

        boolean answer = false;
        System.out.print("The queens name is Elizabeth? yes or no ");
        youranswer = myScanner.toString();

        String start = myScanner.next();

        {
            if (youranswer.equals("yes")) {
                answer = true;
            }
        }

        if (answer == true) {
            System.out.println("Answer is correct");
        } else {
            System.out.println("Answer is wrong");
        }
    }
}

このコードは、入力を必要な文字列 (「はい」または「いいえ」) と比較していないようです。私は初心者で、これは私が遊んでいる基本的なコードです。

4

3 に答える 3

5

文字列を返します、ユーザーが入力した内容に関連するものは何も提供しません:Scanner#toString()

この の文字列表現を返しますScanner。の文字列表現には、Scannerデバッグに役立つ情報が含まれています。正確な形式は指定されていません。

Scanner#next()またはを使用し、 を使用Scanner#nextLine()しないでくださいScanner#toString()


これは非常に基本的な質問であり、JavaDocs として知られる Java API ドキュメントを参照することで簡単に答えられることに注意してください。Stack Overflow に投稿する前に、必ず関連する JavaDoc を参照してください。IDE には適切な JavaDoc が組み込まれている可能性がありますが、Java SE の JavaDoc もhttp://download.oracle.com/javase/7/docs/apiでいつでも見つけることができます。

于 2013-04-14T15:55:49.253 に答える
2

したがって、ここでいくつかのことが行われています。

  • Scanner.next()またはScanner.nextLine()を使用して、エンド ユーザーからの入力を取得します。
  • ifステートメントの周りのコードの静的ブロックを取り除きたいとします。
  • どのような場合でも答えを比較したい - 「YES」と入力すると失敗します。これを次のように変更できます。

    answer = "yes".equalsIgnoreCase(youranswer);
    

    これはブール値であるため、その値が true であるかどうかを比較する必要はありません。変数を true に設定します。明示的に設定できます。

  • true最後のブロックでは、ブール値で比較する必要はありません。簡単に言うことができますif(answer)

于 2013-04-14T16:03:06.913 に答える
0

Scanner.next()メソッドまたはを使用できますScanner.nextLine()

このメソッドは、クラス Scanner.toString()の文字列表現を提供します。実際には、コンソールから入力テキストを読み取りません。ScannerScanner.toString()

さらに詳しい情報、

次のような Scanner クラスで利用可能な特定のメソッドを使用できます

Scanner.nextShort()
Scanner.nextByte()
Scanner.nextInt()

など... Scannerクラスを参照してください

上記の方法は、テキストを整数やすべてに解析するなど、テキストをフォーマットせずに入力テキストを続行するのに役立ちます。

于 2013-04-14T15:57:36.253 に答える