我正在尝试编写一个程序,其中 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"));
}
}