我正在使用tuProlog将Prolog与Java集成,为此,我已经定义了一个.pl文件,其中包含以下代码:
go:-write('hello world!'),nl.
在我位于NetBeans的Java文件中,我有一个调用该类的Main类:
Prolog engine = new Prolog();
Theory theory = new Theory(new FileInputStream("facultad.pl"));
try {
engine.setTheory(theory);
} catch (InvalidTheoryException ex) {
}
SolveInfo solution = engine.solve("go.");
if (solution.isSuccess()) {
System.out.println(solution.getSolution());
}
该准则必须返回“ hello world”,但与其回答“ go”,不如对这种不稳定行为有任何想法?
最佳答案
您的解决方案是(正确地)成功的Prolog查询(go / 0),您所期望的('hello world!')是内置的输出,因此您应该检查Java引擎的“ stdout”。
否则,对程序进行编码以“返回”变量中的信息。
go(X) :- X = 'hello world!'.
然后,tuProlog将提供访问实例变量的方法。