我有一个用 prolog 编写的专家系统,当我从 java 接口运行它时,它会给我带来问题。这些问题与输出的通信有关。我尝试了 Streams,但是(仅在这个项目中)它们不能正常工作,应用程序在编写 txt 文件时显然冻结了,我做了这样的事情:
myFunction(CurPlace, Place) :-
open('text.txt',write,Stream), nl(Stream),
write(Stream,'You cant go from '), write(Stream,CurPlace), write(Stream,' to '), write(Stream,Place), nl(Stream),close(Stream),
fail.
在写作结束时,我用 java 阅读了 txt,在我所有的旧系统中,这个方法工作得很好,但是有了这个,可能是为了推理或递归调用,出了点问题(java 端,因为如果我运行它直接从 swiprolog 一切正常)!所以我决定使用 jpl_get 并打电话,但我是新手。我需要一些帮助!在我的界面中,我有一个 jtextarea 可以打印 prolog 系统的所有输出。我称之为“jTextAreaOUTPUT”,这个组件在我的 java 类接口中。
我的项目文件夹是(在windows中):“main_folder”然后在里面我有(就像所有的eclipse项目一样)src,bin ...我将prolog系统pl文件放在main_folder中,所以interface.java的路径是:src /mypackage/interface.java 如何在我的 jtextarea 中打印示例消息“Start Message”?我试过这个:
start:- jpl_get( 'src.mypackage.interface', jTextAreaOUTPUT, X),
jpl_call(X,append,['Start Message\n']).
...在我的 Java 应用程序中,我以这种方式调用查询:
public static void CallQuery(String t2){
Query q2 = new Query(t2);
try{
q2.hasSolution();
} catch (Exception e) {
}
}
当我从 main() 调用它时,t2 是“开始”!所以当我运行它时,系统会给我“ClassNotFoundException”!
问题1)有人可以给我一个很好的例子来做我想要的吗?
问题 2) jpl get 和 call 中变量 X 的作用是什么?
问题 3)如果我想打印一个变量,我该怎么做?