4

私はJavaを学ぼうとしていますが、2つの条件を持つDo Whileステートメントに関する単一のプログラムを実行しようとして立ち往生しています。具体的には、ユーザーが「はい」または「いいえ」と書くまでメソッドを実行したい。ええと、そこに私のものがあり、それの何が問題なのですか?

    String answerString;
    Scanner user_input = new Scanner(System.in);
    System.out.println("Do you want a cookie? ");

    do{
    answerString = user_input.next();
    if(answerString.equalsIgnoreCase("yes")){
        System.out.println("You want a cookie.");
    }else if(answerString.equalsIgnoreCase("no")){
        System.out.println("You don't want a cookie.");
    }else{
        System.out.println("Answer by saying 'yes' or 'no'");
    }while(user_input == 'yes' || user_input == 'no');
    }
}}
4

2 に答える 2

4

ティムの答えに似たようなことをします。しかし、あなたがやろうとしていた方法で物事を行うには、修正する必要がある多くの問題があります。

(1) Java の文字列リテラルは、一重引用符ではなく二重引用符で囲まれます。

(2)user_inputScannerです。スキャナーを文字列と比較することはできません。Stringを別の とのみ比較できますStringanswerStringしたがって、比較では ではなくを使用する必要がありますuser_input

(3)==文字列の比較には使用しないでください。StackOverflow には 953,235 の Java に関する質問があり、そのうちの約 826,102 は==文字列の比較に使用しようとしている人に関連しています。(OK、それは少し誇張です。) 次のequalsメソッドを使用しますstring1.equals(string2)

(4)do-whileループを記述するときの構文はdo、の後{に が続き、ループ内のコードが続き、 の後に が}続きwhile(condition);ます。}最後を間違った場所に置いたようです。の}直前の は にwhile属しているelseため、カウントされません。}後ではなく、前に別のものが必要ですwhile

yes(5) 入力がorでない場合に継続するループを書こうとしていたと思いますno代わりに、逆のことを行いました。入力が yesorである限り継続するループを作成しましたno。あなたのwhile状態は次のようになります

while (!(answerString.equals("yes") || answerString.equals("no")));

[実際にequalsIgnoreCaseは、コードの残りの部分と一貫性を持たせる !必要があり!ます。!表現。"Loop until blah-blah-blah" を実行するループを作成しようとしている場合は、"Loop while !(blah-blah-blah)" と記述する必要があります。

于 2015-11-03T04:34:47.743 に答える