Java 比较任意逻辑中的两个对象
我正在用anylogic建立一个模型。代码如下:Java 比较任意逻辑中的两个对象,java,anylogic,agent-based-modeling,Java,Anylogic,Agent Based Modeling,我正在用anylogic建立一个模型。代码如下: victim = null; for (People p : main.people){ //když je dostatečně daleko if((distanceTo(p, METER)) < fightDistance){ if( randomTrue( fightProbability ) && !p.equals(victim) ) { vic
victim = null;
for (People p : main.people){
//když je dostatečně daleko
if((distanceTo(p, METER)) < fightDistance){
if( randomTrue( fightProbability ) && !p.equals(victim) ) {
victim = p; //set the victim
break; //stop scan
}
}
}
受害者=null;
用于(p:main.People){
//kdyžje dostatečnědaleko
如果((距离到(p,米))
拳击手应该以20%的概率选择他的受害者。两名战士不能共享同一个受害者,这是行不通的。我需要确保那些被选中的人不是受害者,尽管
&&&!p、 equals(牺牲品)
没有帮助…您需要重写People类的equals()方法。Inner equals()比较人员的唯一字段。我通过在人员类中创建变量isChased
解决了这个问题,该变量设置为false
。然后我在Fighter
类的追踪方法中实现了这一点:
victim = null;
for (People p : main.people){
//když je dostatečně daleko
if((distanceTo(p, METER)) < fightDistance){
if( randomTrue( fightProbability ) && p.isChased != true ) { //random decision
victim = p; //set the victim
p.isChased = true;
break; //stop scan
}
}
}`
受害者=null;
用于(p:main.People){
//kdyžje dostatečnědaleko
如果((距离到(p,米))
您是否覆盖了People
类中的equals(对象o)和hashCode方法?p.equals(受害者)
将始终返回false
,因为受害者
为null。你应该使用另一种方法。例如,创建一个受害者集合,并向其中添加一些人