📜  门| GATE-CS-2017(套装1)|第 34 题(1)

📅  最后修改于: 2023-12-03 15:28:45.472000             🧑  作者: Mango

题目介绍:门| GATE-CS-2017(套装1)|第 34 题

本题要求实现一个简单的门类,具有打开和关闭两个状态。门可以锁定以防止打开,锁定状态也可以被解除。门还可以添加一个密码,只有在正确输入密码后才能打开门。

输入

门的初始状态和希望设置的密码(若无则为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;
    }
}

以上是本题的代码实现片段,其中包括了门的五个主要方法:打开、关闭、锁定、解锁和修改密码。通过这些方法,我们能够控制门的状态、锁定/解锁状态以及密码的设置与修改。