0

对于这个名为 AntCritter 的新小动物,我重写了 processActors 方法,现在当它应该改变它们的颜色时,它会移除它周围的其他小动物。我已经尝试了一大堆东西,但我无法弄清楚,因为在代码中它直接说如果它是一个 antcritter,就不要删除它。move 方法与 bug 基本相同。

public void processActors(ArrayList<Actor> actors)
{
    for(Actor a: actors)
    {
        if(!(a instanceof AntCritter)||!(a instanceof Flower)||!(a instanceof KingCrab))
            a.removeSelfFromGrid();
        if(a instanceof AntCritter)
        {
            setColor(Color.BLUE);
            a.setColor(Color.PINK);
            ((AntCritter) a).move();
        }
    }
}
4

1 回答 1

1

我根本不熟悉 GridWorld,但这是第一个条件:

!(a instanceof Flower)

将是什么true时候。因此您的语句中的其余条件将永远不会被评估。aAntCritterif

阅读关于短路评估的更多信息。

于 2012-04-11T20:59:28.467 回答