从Java调用Jess操纵的对象
) 我正在写我的硕士论文,我必须使用JESS平台。我想问一个问题 例如,我有一个名为“Main”的Java类: 现在我想调用clp文件并操作主类对象,然后执行以下操作:从Java调用Jess操纵的对象,java,call,jess,Java,Call,Jess,) 我正在写我的硕士论文,我必须使用JESS平台。我想问一个问题 例如,我有一个名为“Main”的Java类: 现在我想调用clp文件并操作主类对象,然后执行以下操作: (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)
(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());
}
我得到的结果是“乔”而不是“罗宾”。
你能告诉我如何获得(或调用)Javaobject的操纵版本吗?以及为什么在我操纵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.xml文件:
(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的打印输出调用。
有人知道为什么最后一个电话不是被操纵的吗?
对不起,我对这个问题还很陌生。
我将非常感谢您的帮助。我添加了我使用的类和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.xml文件:
(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的打印输出调用。
有人知道为什么最后一个电话不是被操纵的吗?
对不起,我对这个问题还很陌生。
我将非常感谢您的帮助。最好检查您发布的代码是否(a)没有语法错误,以及(b)是否真实再现了您描述的问题。您将主类中user的值设置为“Joe”,因此当您调用getUser时,当然会得到Joe。就像在第二个代码片段中一样,您需要调用setUser,main.setUser(“Robin”),最好检查您发布的代码是否(a)没有语法错误,并且(b)确实再现了您描述的问题。您将主类中user的值设置为“Joe”,因此,当您调用getUser时,当然会得到Joe。就像在第二段代码中一样,您需要调用setUser,main.setUser(“Robin”),哦,好的,我找到了解决方案。我忘了问实际值。如果我在system.out.println(“在操纵”+getAktuell之后)之前添加,则-->getAktuell=vw.getMarke();然后我得到了大众的操纵版本。有时候,在问别人之后想问题更容易些:-)问别人总是可以的,但是(正如你现在清楚地看到的)问一个不能真正描述你问题的问题是不可以的你可以删除整个问题-这对任何人都没有好处。-永远不要用额外的信息回答你自己的问题——这应该进入你的问题,你可以编辑。请不要“破坏”你的帖子,那样会造成混乱。你应该改为将这些信息编辑到你的问题中,然后删除下面带有“删除”链接的帖子。哦,好的,我找到了解决方案。我忘了问实际值。如果我在system.out.println(“在操纵”+getAktuell之后)之前添加,则-->getAktuell=vw.getMarke();然后我得到了大众的操纵版本。有时候,在问别人之后想问题更容易些:-)问别人总是可以的,但是(正如你现在清楚地看到的)问一个不能真正描述你问题的问题是不可以的你可以删除整个问题-这对任何人都没有好处。-永远不要用额外的信息回答你自己的问题——这应该进入你的问题,你可以编辑。请不要“破坏”你的帖子,那样会造成混乱。你应该改为将这些信息编辑到你的问题中,然后删除下面带有“删除”链接的帖子。