我不明白一行简单的代码

I dont understand one simple line of code

下面是行:

if (!seatNum[i]) 

我不明白这个line.Code的目的:

 if(economyClass<5) {
    for(int i=5;i<seatNum.length;i++) {
        if(!seatNum[i]) {
            seatNum[i]=true;
            System.out.println("Economy Class. Seat number: "+(i+1));
            economyClass++;
            break;
        }
    }
 }

假设 seatNum[] 是一个布尔数组,这意味着: 如果 seatNum 的索引 i 处的元素为假,则继续。

你也可以读作:if(seatNum[i] == false)

seatNum[] 必须是布尔数组,!seatNum[i] 扩展为 (seatNum[i]==false),计算结果为 truefalse。因此它正在检查 seatNumber 是否未被占用,如果未被占用则分配它。

看起来seatNum是一个布尔数组,表示是否有人坐下

if(!seatNum[i]) 是如果没有座位,类似但更短的检查方式 seatNum[i] == false

您将其标记为已使用 seatNum[i]=true; 并将经济舱编号增加 economyClass++;

在 Java 中,!也称为布尔否定运算符,它的作用是反转布尔值:

!true => false
!false => true

为了编译发布的代码,seatNum 数组应包含布尔值。

我可以假定 seatNum 数组为布尔类型,因为您没有提到数组 seatNum 的数据类型。 如果我的假设是正确的,第 i 个索引中数组的内容可以是 true 或 false,如果 !true 等于 false,则代码的直接行在第 i 个索引中设置 true。 在一行中,!是逻辑非运算符,非真表示假。

希望这可以帮助您更多地探索 java

中的运算符