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

剧院座位布尔数组管理及显示功能实现求助

没问题,我来帮你搞定这个剧院座位预订的功能!用布尔一维数组完全能满足你的需求,下面我给你详细的代码实现和解释:

核心实现思路
  • 用布尔数组seatArray存储座位状态:false代表空座,true代表已被预订
  • 初始化时,布尔数组的默认值就是false,刚好直接对应所有座位为空的初始状态,不用额外循环赋值
  • 预订座位时,先校验座位号的合法性,再通过数组元素的布尔值判断是否已被占用,未占用则修改为true
  • 显示功能通过遍历数组,把抽象的布尔值转换成用户易懂的符号(比如O表示空座,X表示已预订)来展示
完整代码示例(Java)
public class TheaterSeating {
    // 存储座位状态的布尔数组
    private boolean[] seatArray;

    // 构造方法:初始化剧院的总座位数
    public TheaterSeating(int totalSeats) {
        // 创建数组,默认所有元素为false(空座)
        seatArray = new boolean[totalSeats];
    }

    // 预订座位方法:seatNumber为用户输入的座位号(从1开始计数)
    public boolean bookSeat(int seatNumber) {
        // 先检查座位号是否在合法范围内
        if (seatNumber < 1 || seatNumber > seatArray.length) {
            System.out.println("错误:这个座位号不存在哦!");
            return false;
        }
        // 数组索引从0开始,所以要把座位号减1
        int seatIndex = seatNumber - 1;
        
        if (!seatArray[seatIndex]) { // 座位为空(false)
            seatArray[seatIndex] = true;
            System.out.println("座位" + seatNumber + "预订成功!");
            return true;
        } else { // 座位已被占用(true)
            System.out.println("抱歉,座位" + seatNumber + "已经被别人预订啦!");
            return false;
        }
    }

    // 显示所有座位状态的方法
    public void displaySeats() {
        System.out.println("\n当前剧院座位状态:");
        for (int i = 0; i < seatArray.length; i++) {
            // 把布尔值转换成直观符号:O=空座,X=已预订
            String seatStatus = seatArray[i] ? "X" : "O";
            System.out.print("座" + (i + 1) + ":" + seatStatus + "  ");
            // 每5个座位换行,排版更清晰
            if ((i + 1) % 5 == 0) {
                System.out.println();
            }
        }
        System.out.println();
    }

    // 测试用主方法
    public static void main(String[] args) {
        // 创建一个有15个座位的剧院
        TheaterSeating myTheater = new TheaterSeating(15);
        // 显示初始空座状态
        myTheater.displaySeats();
        
        // 尝试预订几个座位
        myTheater.bookSeat(3);
        myTheater.bookSeat(7);
        myTheater.bookSeat(3); // 重复预订同一个座位
        myTheater.bookSeat(20); // 预订不存在的座位
        
        // 再次显示更新后的座位状态
        myTheater.displaySeats();
    }
}
关键代码解释
  1. 数组初始化:Java中创建布尔数组时,所有元素默认值就是false,所以我们不需要手动循环设置每个座位为空,直接new boolean[totalSeats]就搞定了,非常省心。
  2. 预订逻辑:用户习惯从1开始数座位号,但数组索引是从0开始的,所以要做seatNumber - 1的转换。先判断座位号是否合法,再检查状态,确保不会出现数组越界或者重复预订的问题。
  3. 显示优化:把布尔值转换成O和X比直接打印true/false更直观,同时每5个座位换行,避免一行显示太长,用户查看起来更舒服。
扩展建议
  • 可以添加取消预订的方法,把对应座位的布尔值改回false即可
  • 增加统计空座数量的功能:遍历数组统计false的个数
  • 如果需要支持多厅,可以把座位数组封装成厅类,扩展更灵活

内容的提问来源于stack exchange,提问作者Cem Koçak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:40:02