java中的迭代器状态集

cedebl8k  于 2021-07-08  发布在  Java
关注(0)|答案(2)|浏览(268)

所以我写了这部分申请。但不是一直都有效。

public void setStatus(int id, int area, boolean free)
{
    Iterator<Ambulance> ab = cars.iterator();
    while(ab.hasNext()){
        Ambulance ambulance = ab.next();
        if(ambulance.getID() == id){
            ambulance.moveTo(area);
            ambulance.setBusy();
        }  
    }

}

对于这个设置状态,我有这个测试条件,但是这个部分 assertEquals(!oldStatus, selected.isFree()); 这种情况的任何一种都不起作用。我该怎么办?

public void moveAmbulance()
{
    // Select a random Ambulance to be moved.
    Ambulance selected = shadow.get(rand.nextInt(shadow.size()));
    int oldArea = selected.getArea();
    boolean oldStatus = selected.isFree();
    control.setStatus(selected.getID(), oldArea + 1, !oldStatus);
    assertEquals(oldArea + 1, selected.getArea());
    assertEquals(!oldStatus, selected.isFree());
}
mpbci0fu

mpbci0fu1#

你不使用 free 中的参数 setStatus 方法

public void setStatus(int id, int area, boolean free)
{
    Iterator<Ambulance> ab = cars.iterator();
    while(ab.hasNext()){
        Ambulance ambulance = ab.next();
        if ((free) && (ambulance.getID() == id)) {
            ambulance.moveTo(area);
            ambulance.setBusy();
        }  
    }
}
wribegjk

wribegjk2#

public void setStatus(int id, int area, boolean free)
{
    Iterator<Ambulance> ab = cars.iterator();
    while(ab.hasNext()){
        Ambulance ambulance = ab.next();
        if(ambulance.getID() == id){
            ambulance.moveTo(area);
        }
        if(free){
            ambulance.setFree();
        } else{
            ambulance.setBusy();
        }

    }
}

相关问题