我正在使用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将提供访问实例变量的方法。

09-30 17:28