📜  门| GATE 2017 MOCK II |第 58 题(1)

📅  最后修改于: 2023-12-03 14:58:17.614000             🧑  作者: Mango

门| GATE 2017 MOCK II |第 58 题

本题是GATE 2017 MOCK II的第58题。在这个问题中,我们要求编写一个Java程序来模拟门的运作。

题目描述

门包含两个状态:打开和关闭。门有一个 toggle() 方法,它可以在这两个状态之间切换。在关闭状态下,门可以锁定,防止门被打开。该门还具有一个isLocked()方法来检查门是否被锁定。

您的任务是实现 Door 类,该类必须模拟上述行为。

输入格式

该门有两个状态:打开(open)和关闭(closed)。在关闭状态下门可以被锁定(lock)。初始时门的状态为关闭状态,且未被锁定。

该门需要以下方法:

  1. toggle()方法:将门从一个状态切换到另一个状态。如果门是关闭状态,那么切换后变为开启状态;如果门是开启状态,那么切换后变为关闭状态。

  2. isLocked()方法:检查门是否被锁定。如果门被锁定,返回true;否则,返回false。

  3. lock()方法:将门锁定。只有在门处于关闭状态下,门才能被锁定。此时如果不锁定则返回false;若已经锁定则返回true。

  4. 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