3

ユーザーに妊娠しているかどうかを尋ねるプログラムを作成しようとしています。私が抱えている問題は、人が「たぶん」または「はい」または「いいえ」以外の応答を入力した場合、プログラムに「はいまたはいいえの質問です」と言ってから、ユーザーにもう一度質問に答えるように促します。代わりに、「はいまたはいいえの質問です」と「妊娠していますか?」を出力しますが、別の応答を受け入れることはできません。これは私がやろうとしていることの正しい形式ですか? 言い換えれば、はいまたはいいえの答えが得られるまで、プログラムが妊娠しているかどうかをユーザーに尋ね続ける必要があります。

import acm.program.*;

public class AskProgram extends ConsoleProgram{
    public void run(){

        String answer = readLine(" are you pregnant? ");

        if (answer.equals("yes")) {
            println("Great! Congratulations ");
        } else if (answer.equals("no")) {
            println("keep trying it will happen."); 
        } else {
            println("Its a yes or no question");
            readline("are you pregnant? ");
        }          
    }
}
4

2 に答える 2

4

これにより、ユーザーが「はい」または「いいえ」を入力するまでブロックが繰り返されます。

String answer = "";
while (!answer.equalsIgnoreCase("yes") && !answer.equalsIgnoreCase("no")) {
    answer = readLine("Are you pregnant?");
    if (answer.equalsIgnoreCase("yes")) {
        println("Great! Congratulations ");
        break;
    } else if (answer.equalsIgnoreCase("no")) {
        println("keep trying it will happen."); 
        break;
    } else {
        println("Its a yes or no question");
        readline("are you pregnant? ");
    }    
}
于 2013-05-11T00:04:04.847 に答える
-1

これは、再帰 (および戻り値) を使用するバージョンです。

private static boolean isPregnant() {
    String answer = readLine("Are you pregnant?");
    if (answer.equalsIgnoreCase("yes")) {
        println("Great! Congratulations ");
        return true;
    } else if (answer.equalsIgnoreCase("no")) {
        println("keep trying it will happen.");
        return false;
    } else {
        println("It's a yes or no question");
        return isPregnant();
    }

}
于 2013-05-11T00:13:31.777 に答える