2017-07-18 156 views
0

我在用anylogic建立一個模型。這裏是代碼:在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 
      } 
    } 
} 

戰鬥機應該選擇他的受害者的概率爲20%。兩名戰士不能共享同一個受害者,這是行不通的。我需要確保選定的人不是受害者,儘管&& !p.equals(victim)不會幫助...

+0

你有沒有在你的'People'類中重寫了equals(對象O)和hashCode方法? – MaxPower

+0

'p.equals(受害人)'將始終返回'false',因爲'victim'爲空。你應該使用另一種方法。例如。創建一個受害者集合並添加一些peopel –

回答

0

您需要覆蓋People類的equals()方法。在equals()內比較一個獨特的人的領域。

0

我已經通過在People類中創建變量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 
      } 
    } 
}`