run メソッドが述語メソッドを呼び出して、誰かに「今夜映画に行きたいですか?」と尋ねるプログラムを作成しようとしています。ユーザーが質問に「はい」と入力した場合、プログラムに「わかりました。今夜行こう」と言ってもらいたいのです。ユーザーが「いいえ」と入力した場合、プログラムに「それはいいですね、来週行きましょう」と出力させたいと思います。しかし、ユーザーが「たぶん」と入力した場合、プログラムに「はいまたはいいえの質問です」と言ってから、もう一度「今夜映画に行きたいですか?」という質問をしてから、ユーザーが入力するのを待ちます。再び応答します。
私が抱えている問題は、ユーザーが「たぶん」と入力すると、プログラムは「はいまたはいいえの質問です」と言ってから、「大丈夫です、来週行きましょう」と自動的に出力することです。プログラムでこの誤ったロジックを修正するにはどうすればよいですか? これは、私の本でパラメーターの受け渡しに焦点を当てた章の質問です。文字列値を run メソッドから isYesorNo メソッドに渡して、記述しようとしているプログラムを正しく設計しましたか?
import acm.program.*;
public class MoviesTonight extends ConsoleProgram {
public void run() {
String answer = readLine("do you want to go to a movie tonight?");
if (isYesorNo(answer)) {
println("Ok. Let's go tonight");
} else
println("that's cool let's go next week");
}
private boolean isYesorNo(String response) {
while (!response.equals("yes") && !response.equals("no")) {
println("it's a yes or no question");
break;
}
return (response.equals("yes"));
}
}