我正试图编写一个程序,其中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"));
}
}
如果我不使用破解程序会连续打印“这是一个yes或no的问题”,它不会停止。 – 2013-05-14 01:26:05
是的,因为你没有得到新的输入。您应该添加另一行以从'readLine'获取新输入。 – 2013-05-14 01:28:43
在isYesorNo方法内还是在运行方法中添加另一个输入行? – 2013-05-14 01:31:16