Java 在制定了一条规则谁能数一数之后,我该如何将布尔事实放入一个槽中?

Java 在制定了一条规则谁能数一数之后,我该如何将布尔事实放入一个槽中?,java,jess,Java,Jess,我想计算我的事实,事实必须是布尔值。对于我的意图,我只需要数真。我的问题是,例如,如果我断言或使用deffact在一个插槽中生成4个事实。工作记忆不能读出所有的事实。我试着用另一个数据(本例中的名称)放置另一个插槽,效果很好,但我不需要另一个插槽。我只是为了试着运行这段代码。还有别的选择吗?让我告诉你: (deftemplate testing (slot bole)(slot otro)) (watch all) (defquery search-by-true "Finds tru

我想计算我的事实,事实必须是布尔值。对于我的意图,我只需要数真。我的问题是,例如,如果我断言或使用deffact在一个插槽中生成4个事实。工作记忆不能读出所有的事实。我试着用另一个数据(本例中的名称)放置另一个插槽,效果很好,但我不需要另一个插槽。我只是为了试着运行这段代码。还有别的选择吗?让我告诉你:

(deftemplate testing (slot bole)(slot otro))

(watch all)

(defquery search-by-true

  "Finds true"
(declare (variables ?ln))
(testing (bole ?ln)(otro ?ot)))

 (deffacts data

  (testing (bole TRUE)(otro josue))
  (testing (bole TRUE)(otro pedro))
  (testing (bole FALSE)(otro pablo))
  (testing (bole TRUE)(otro carlos))
)

(reset)

    (bind ?result (run-query* search-by-true TRUE))

(bind ?x 0)

  (while (?result next)

   (bind ?x (+ ?x 1))

   )
       (printout t (* ?x 0.3) crlf)
我的意图是通过使用java代码和jess的对象来学习这一点。我将如何使用JCheckbox,这个对象是布尔型的,所以这就是为什么我需要理解它。
如果你有一个好的推荐信给我,我会谦恭地接受。谢谢。

如果我理解正确,您希望工作记忆包含以下内容

(testing (bole TRUE))
(testing (bole TRUE))
(testing (bole FALSE))

。。。然后运行一些代码,告诉您有两个“bole TRUE”事实。这在Jess中是不可能的:工作记忆不能包含重复的事实。如果您试图断言一个与现有事实相同的事实,assert将返回FALSE,并且不会对工作内存进行任何更改。您可以使用额外的插槽来包含序列号或其他一些唯一信息。

您的程序运行良好,尤其是当您将奇怪的乘法0.3移除时。结果是3,这可能是意料之中的。那你的问题在哪里呢?是的,就像我说的那样,工作很好,但是如果我在“otro”这个插槽里装了一个工具,我就无法计算我所有的事实。。这就像节目认为我所有的事实都是一样的。在这种情况下,我只想使用一个插槽(bole)。。我该怎么做?有没有可能@laune?我提出我的观点。。。那么a能做什么呢?谢谢欧内斯特的回答以后,一定要发布您实际使用过的代码,并描述为什么它不起作用,而不是其他代码!谢谢,我理解你的观点。我以后会做的