📅  最后修改于: 2023-12-03 14:58:17.614000             🧑  作者: Mango
本题是GATE 2017 MOCK II的第58题。在这个问题中,我们要求编写一个Java程序来模拟门的运作。
门包含两个状态:打开和关闭。门有一个 toggle() 方法,它可以在这两个状态之间切换。在关闭状态下,门可以锁定,防止门被打开。该门还具有一个isLocked()方法来检查门是否被锁定。
您的任务是实现 Door 类,该类必须模拟上述行为。
该门有两个状态:打开(open)和关闭(closed)。在关闭状态下门可以被锁定(lock)。初始时门的状态为关闭状态,且未被锁定。
该门需要以下方法:
toggle()方法:将门从一个状态切换到另一个状态。如果门是关闭状态,那么切换后变为开启状态;如果门是开启状态,那么切换后变为关闭状态。
isLocked()方法:检查门是否被锁定。如果门被锁定,返回true;否则,返回false。
lock()方法:将门锁定。只有在门处于关闭状态下,门才能被锁定。此时如果不锁定则返回false;若已经锁定则返回true。
unlock()方法:将门解锁。只有在门处于关闭状态并且已被锁定时,门才能被解锁。此时若解锁则返回true;若未锁定则返回false。
门类中的 toggle()、isLocked()、lock() 和 unlock() 四个函数需要按照题目描述的要求实现。
public class Door {
private boolean isOpen = false;
private boolean isLocked = false;
public Door() {
}
public boolean isOpen() {
return isOpen;
}
public boolean isLocked() {
return isLocked;
}
public boolean toggle() {
if(isLocked){
return false;
}
isOpen = !isOpen;
return true;
}
public boolean lock() {
if(isOpen){
return false;
}
isLocked = true;
return true;
}
public boolean unlock() {
if(isLocked&& !isOpen){
isLocked = false;
return true;
}
return false;
}
}
在完成代码后,您应该根据以下示例行为对其进行测试:
Door door = new Door();
System.out.println(door.toggle()); // true
System.out.println(door.isLocked()); // false
System.out.println(door.lock()); // true
System.out.println(door.isLocked()); // true
System.out.println(door.toggle()); // false
System.out.println(door.unlock()); // true
System.out.println(door.toggle()); // true