You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:用双层增强for循环统计二维布尔数组false值,返回语句致程序无法运行

解决二维布尔数组统计空座位(false)的问题

嘿,我瞅见你这段统计影院空座位的代码跑不起来,咱们来捋捋问题出在哪,然后给你改好的版本。

首先说你代码里的几个关键错误:

  • 内层增强for循环写错了:你内层用for (boolean[] seteNr : cinemaSeats),这是在遍历整个影院的所有行,而不是当前行里的单个座位!应该遍历当前行radNr里的每个布尔值才对。
  • 多余的索引变量操作:你定义的rowLength和seatLength完全没必要,还手动做递减操作,这会导致你用cinemaSeats[rowLength][seatLength]访问元素时,索引乱掉甚至触发数组越界异常——增强for循环本来就是直接遍历元素,根本不需要手动维护索引。
  • 逻辑混乱导致计数错误:就算没报错,你的索引递减逻辑也会让你重复或者错误地访问座位,统计结果肯定不对。

下面是修正后的代码,完全用增强for循环实现,逻辑清晰:

public static int emptySeats(boolean[][] cinemaSeats) {
    int availableSeats = 0;
    // 外层遍历每一行
    for (boolean[] row : cinemaSeats) {
        // 内层遍历当前行的每个座位
        for (boolean seat : row) {
            // 如果座位是false(空座),计数加一
            if (!seat) {
                availableSeats++;
            }
        }
    }
    return availableSeats;
}

额外提个小建议:你原来用byte作为返回值,但是byte的最大值是127,如果影院座位数超过这个数,就会溢出报错。换成int会更安全,除非你能确定影院的座位总数绝对不会超过127个。

内容的提问来源于stack exchange,提问作者Lang Awuor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:05:37