寻找一种有助于根据前一个问题答案选择下一个问题的算法。例如:如果第一个问题是 你拥有一部智能手机吗? 如是 2.它有什么类型的传感器?
如果没有 你想买哪种智能手机?
这些问题的分支应基于最后一个问题并回答。 可以采用哪些技术来推导出这一点。任何通用算法都可以使用。
答案 0 :(得分:0)
您必须决定是否应该提出问题。这是一种方式。我还没有提供QuestionContext,你的工作是决定如何存储答案,并根据这个问题决定问题是否可用。
我很想采用next()
问题方法,但有时候你需要更多的背景(例如,如果你拥有智能手机和智能手机来自Apple,请询问正在运行的iOS版本)。
希望这有帮助!
interface Question {
public boolean isAvailable(QuestionContext ctx);
public void ask();
// ... rest of the methods
}
public class Questionnaire implements QuestionContext {
private Question[] qs;
// constructors, getters, etc.
public void ask() {
for (Question q : qs) {
if (q.isAvailable(this)) {
q.ask();
}
}
}
}
P.S。如果你需要更复杂的东西,有一些流程框架可用于各种任务,但你必须得到这个想法并提出适合你需求的东西。一个例子是Spring WebFlow
,它在类似向导的页面上下文中决定下一个页面。