gpt4 book ai didi

java - 从 Java 中调用 Jess 操作的对象

转载 作者:太空宇宙 更新时间:2023-11-04 12:55:18 24 4
gpt4 key购买 nike

)

我正在写我的硕士论文,我必须使用 JESS 平台。我想问一个问题。

例如,我有一个名为“Main”的 Java 类:

public class Main {

private String user = "Joe";
public String getUser(){ return user; }
public String setUser(String user){ this.user = user;}
public static void main( String[] args ) throws Exception {
Main main = new Main();
Rete rete = new Rete();
rete.store( "main", main );
rete.batch( "two.clp" );
}
}

现在我想调用 clp 文件并操作 Main-Class-Object 并执行以下操作:

(printout t "main.user = " ((fetch main) getUser) crlf) ;; I got for this Joe
((fetch main) setUser "Robin")
(printout t "main.user = " ((fetch main) getUser) crlf) ;; For this I got Robin

但是现在我想问你如何从 Java 代码中调用这个名为“Robin”的被操纵用户?如果我像这样用 Java 调用:

public static void main( String[] args ) throws Exception {
Main main = new Main();
Rete rete = new Rete();
rete.store( "main", main );
rete.batch( "two.clp" );
System.out.println(main.getUser());
}

我得到的结果是“Joe”而不是“Robin”。你能告诉我如何获取(或调用)Java对象的操纵版本吗?为什么当我操作时它在我的 Java 类中没有被操作Jess 给 Robin 的用户名?

如果您给我留言,我将不胜感激。谢谢。

最佳答案

我添加了我使用的类和 clp.file:

java类:

  package Versuch;
import jess.*;

public class Auto {

private String marke = "";
private int ps = 0;

public Auto(String marke, int ps){
this.marke = marke;
this.ps = ps;
}

public String getMarke() {
return marke;
}

public void setMarke(String marke) {
this.marke = marke;
}


public int getPs() {
return ps;
}



public void setPs(int ps) {
this.ps = ps;
}

public static void main(String[] args) {
String getAktuell = "";

Auto vw = new Auto("VW", 90);
getAktuell = vw.getMarke();
System.out.println(" before manipulating " + getAktuell );

Rete engine = new Rete();
engine.store("vw", vw);
try {
engine.batch("Versuch/rulebase.clp");

System.out.println(" after manipulating " + getAktuell);



} catch (JessException e) {
System.out.println("JESS ERROR");
e.printStackTrace();
}


}

}

clp.文件:

(printout t "vw.getMarke = " ((fetch vw) getMarke) crlf)

((fetch vw) setMarke "Mercedes")


(printout t "vw.getMarke = " ((fetch vw) getMarke) crlf)

输出:

before manipulating VW
vw.getMarke = VW
vw.getMarke = Mercedes
after manipulating VW

第一个输出和最后一个输出是来自 java 类的 system.out.println 调用。第二个和第三个输出是来自 clp.file 的打印输出调用。有人明白为什么最后一个调用不是被操纵的调用吗?抱歉,我对这个问题真的很陌生。我将非常感谢您的帮助。

关于java - 从 Java 中调用 Jess 操作的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35445701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com