我遇到的问题是当锁已经打开时,几乎不正确的组合将无法发挥作用,因为它将保持打开状态。当我阅读它并尝试它时,这似乎很容易,但测试用例并没有通过。我标记了我创建的代码,但未传递评论。有人可以帮我弄清楚它为什么不起作用?
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;
}
答案 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的工作是保持锁的状态,这是真的还是假的,所以只需返回它。