0

我遇到问题的地方是当锁已经打开时,那么几乎不正确的组合不会产生影响,因为它会保持打开状态。当我阅读并尝试它时,这似乎很容易,但测试用例没有通过。我标记了我创建的未通过注释传递的代码。有人可以帮我弄清楚为什么它不起作用吗?

public void open(Combination opening){
    Lock temp = new Lock(upper, opening);

    if(opening.equals(unlock)){
         cl = true;

    }else {
    //this if statement is what I came up with to find if it is open 
        if(temp.isOpen() == true){
            cl = true;
        }
        cl = false;

    }
}


public boolean isOpen() {

    boolean op = true;
    if(cl == false){
        op = false;
    }   

    return op;
}


public void close() {

        cl = false;

}
4

1 回答 1

1

这里有几个风格问题,但我认为问题可能出在你的临时锁上

if(temp.isOpen() == true){

我不明白你为什么需要临时锁

public void open(Combination opening){

   // If the combination is right open the lock
   // if it was already open no change
   if(opening.equals(unlock)){
     opcl = true;
   } 
   // no else, if combination was wrong 
   // leave the status as it was
}

现在作为一个风格问题,您对待布尔值的方式非常糟糕。从不写

if ( bvalue == true )

写吧

if ( bvlaue )

这就是布尔值的全部意义,它们真还是假。

因此,您的支票远比需要的复杂,这就是您所需要的。

// The  method  isOpen, which   returns a   
// boolean indicating  whether the lock    is  opened  or  not.
public boolean isOpen() {   
    return opcl;
}

opcl 的工作是保持锁的状态,它是真还是假,所以只需返回它。

于 2013-10-17T16:14:17.580 回答