锁具有不正确的组合,但由于它最初是打开的,因此保持打开状态

时间:2013-10-17 16:04:55

标签: java methods locking

我遇到的问题是当锁已经打开时,几乎不正确的组合将无法发挥作用,因为它将保持打开状态。当我阅读它并尝试它时,这似乎很容易,但测试用例并没有通过。我标记了我创建的代码,但未传递评论。有人可以帮我弄清楚它为什么不起作用?

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;

}

1 个答案:

答案 0 :(得分: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的工作是保持锁的状态,这是真的还是假的,所以只需返回它。