📅  最后修改于: 2023-12-03 15:28:45.472000             🧑  作者: Mango
本题要求实现一个简单的门类,具有打开和关闭两个状态。门可以锁定以防止打开,锁定状态也可以被解除。门还可以添加一个密码,只有在正确输入密码后才能打开门。
门的初始状态和希望设置的密码(若无则为null)
门类的实现,即包含打开/关闭,锁定/解锁和密码验证功能的类。
/**
* 门类
*/
public class Gate {
private boolean isOpen; // 门的状态,true为打开,false为关闭
private boolean isLocked; // 门的锁定状态,true为已锁定,false为未锁定
private String password; // 门的密码,null表示无密码
public Gate(boolean isOpen, boolean isLocked, String password) {
this.isOpen = isOpen;
this.isLocked = isLocked;
this.password = password;
}
/**
* 打开门
*
* @param input 密码,若门无密码则该参数为null
* @return boolean 布尔值,表示门是否成功被打开
*/
public boolean open(String input) {
if (!isOpen && !isLocked && (password == null || password.equals(input))) {
isOpen = true;
return true;
}
return false;
}
/**
* 关闭门
*
* @return boolean 布尔值,表示门是否成功被关闭
*/
public boolean close() {
if (isOpen) {
isOpen = false;
return true;
}
return false;
}
/**
* 锁定门
*
* @return boolean 布尔值,表示门是否成功被锁定
*/
public boolean lock() {
if (!isLocked && !isOpen) {
isLocked = true;
return true;
}
return false;
}
/**
* 解锁门
*
* @return boolean 布尔值,表示门是否成功被解锁
*/
public boolean unlock() {
if (isLocked && !isOpen) {
isLocked = false;
return true;
}
return false;
}
/**
* 修改密码
*
* @param oldPwd 旧密码,若门无密码则该参数为null
* @param newPwd 新密码,若门不想设置密码则该参数为null
* @return boolean 布尔值,表示修改密码是否成功
*/
public boolean changePwd(String oldPwd, String newPwd) {
if (password == null || password.equals(oldPwd)) {
password = newPwd;
return true;
}
return false;
}
}
以上是本题的代码实现片段,其中包括了门的五个主要方法:打开、关闭、锁定、解锁和修改密码。通过这些方法,我们能够控制门的状态、锁定/解锁状态以及密码的设置与修改。