Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 比较任意逻辑中的两个对象_Java_Anylogic_Agent Based Modeling - Fatal编程技术网

Java 比较任意逻辑中的两个对象

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

我正在用anylogic建立一个模型。代码如下:

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。你应该使用另一种方法。例如,创建一个受害者集合,并向其中添加一些人