【发布时间】:2014-06-02 15:01:13
【问题描述】:
我不知道在 Java 中是否可行,但我需要一种方法来执行特殊的“添加功能”。 让我解释一下,
简短版: 是否可以使用 Integer 对象添加 int ?我需要一种方法来检查该整数对象是否存在,如果对象为空,则添加 0,否则添加正确的值 我试过了
public static Integer isNull(Integer bonus){
if (bonus == null)
return Integer.valueOf(0);
else
return bonus;
}
但我无法进入“空”分支。
完整版: Integer Bonus 值是触发 Drools 规则的结果。此规则使用 insertLogical(new object) 语句返回此整数奖励。根据口水手册,
插入逻辑(新的东西());类似于插入,但对象将 当没有更多事实支持真相时自动撤回 当前触发规则。 换句话说,只要该规则的条件不再为真, 引擎收回逻辑插入的事实。这通常被称为 作为“真相维护”
所以只要规则有效,Bonus 对象就存在并且正常总和有效;但是当规则被撤回并且奖金被销毁时,我需要这笔款项继续有效
上瘾了,我可以说我正在尝试使用 Drools 实现 Magic The Gathering 纸牌游戏;所以我正在尝试对卡片进行编码,例如“当某事,所以某事”。使用 insertLogical 我猜我只需要关心规则的激活而不是删除它。
我希望我的问题很清楚,对不起我的英语不好
更好的解释(也许): 不是那么简单,卡有一个整数值,有时,根据触发的规则不同,这个值可能会改变。我不想手动更改该值,因为该值可以通过多种方式更改,因此我需要 insertLogical() 至少在规则不再存在时不再关心更改这些值.
示例: 我有一张价值为 3 的牌在场。然后我打出另一张牌,将其值增加到 4,但前提是第二张牌仍在场上。 通常,使用 Drools 插入语句,我必须编写一些代码来增加该卡的值字段(映射到 Java 类),然后在第二张卡不再播放时减少该值的一些代码。使用 insertLogical(如果我理解正确的话)我有免费的减少代码。 问题是 inserteLogical 仅适用于新的 java 对象(不是现有的对象,或者最不适用于对象字段);所以我声明了一个新的 Bonus 对象(一个正整数或负整数)我可以添加到卡值中,但它可以随时销毁,并且“添加”函数必须仍然有效。
当第二张牌打出时(或者已经打出第一张牌)我必须像这样修改第一张牌的值
card.value=card.value + isNull(bonus)
因此它可以自动更改是否存在奖金(第二张卡)
【问题讨论】:
-
不能进入空分支是什么意思?为我工作,除非我误解了你
-
你可以举一些你想要发生的事情的例子,比如:
assertEquals(0, isNull(null));和assertEquals(10, isNull(10)); -
aryanaq 的答案:我无法进入从 Main 调用此静态方法的空分支,在 args[1] 中传递整数值
-
增加混乱?如果这是
static void main的(不是Main的)参数,则不能在args[x]中传递整数。 - 还有:什么“总和 [需要] 继续有效?”我认为我知道您要做什么,但更清晰的规范会有所帮助。 -
Uhhhhh,是的,很多混乱,我通过像这样解析将一个整数传递到 'args[0]' Integer.parseInt(args[0]) AND现在比以前清晰了吗?