我不明白为什么这段代码标记了东西

时间:2019-07-22 04:59:19

标签: java boolean

我试图使用剧院类的真实示例来理解收集框架,其中包含一个名为seat ..的内部类。

因为有了代码,所以我开始创建自己的代码,但是我陷入了困境,然后参考了提供给我的代码。该代码是创建一个Java程序,该程序可用于预订剧院的座位。

private boolean reservedSeat=false;

    private Boolean reserve(){
    if(!reservedSeat){
                    reservedSeat=true;
                    System.out.println("Seat "+seatNumber+" is reserved.");
                    return true;
                }
                else
                    return false;
    }

此代码用于在剧院保留座位。该代码在内部类Seat中定义。我不明白这个if陈述是什么意思 (!reservedSeat),reservedSeat已被初始化为false !reservedSeat等于true,但是if块语句中的以下各行再次设置了reservedSeat = true,因此此代码中实际发生的情况。 我想到这个if语句表示如果reservedSeat为true,即seat为reserved,请将reservedSeat设置为true。但是我知道那是胡言乱语。请帮助我了解其实际要说的基本概念。

1 个答案:

答案 0 :(得分:0)

这是一个非常典型的构造。

代码检查座位是否尚未预留(if (!reserved)) 如果该检查成功,则保留座位(reservedSeat = true) 并返回true,作为呼叫者预订座位成功的信号。

如果第一次检查不成功,即座位已被预订,则该方法仅返回false,表示预订该座位的尝试失败。

我建议扭转这种状况,这样一来就可以减少一种否定:

private boolean reservedSeat=false;

private Boolean reserve() {

    if(reservedSeat) {
        return false;
    } else {

        reservedSeat=true;
        System.out.println("Seat "+seatNumber+" is reserved.");
        return true;
    }
}