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

C语言点餐算法问题:如何仅显示已填写订单而非全部槽位?

解决点餐算法Case3显示全量槽位的问题

核心问题定位

你当前的Case3逻辑应该是直接遍历了0到100的所有槽位索引,不管对应位置是否有有效订单数据,导致空槽位也被输出。

具体修复方案

方案1:遍历前过滤有效订单

如果订单存储在数组/列表中,先筛选出非空/已填写的订单条目再遍历:

# 示例(假设订单存储在order_slots列表中)
valid_orders = [order for order in order_slots if order is not None and order != {}]
for order in valid_orders:
    # 输出订单报告内容
    print(f"订单ID: {order['id']}, 菜品: {order['dishes']}")

方案2:改用动态存储结构

不要用固定长度(100)的数组,改用字典或链表来存储订单,只保留有数据的条目:

# 用字典存储,键为槽位号,值为订单数据
orders_dict = {}
# 当创建订单时,仅在对应槽位有数据时添加
orders_dict[slot_number] = {"id": slot_number, "dishes": ["宫保鸡丁"]}

# 生成报告时直接遍历字典的values
for order in orders_dict.values():
    # 输出订单内容
    print(order)

方案3:遍历过程中跳过空槽位

如果必须保留固定长度数组,在遍历每个槽位时增加判断,跳过无数据的条目:

// 示例Java代码
Order[] orderSlots = new Order[100];
for (int i = 0; i < orderSlots.length; i++) {
    Order order = orderSlots[i];
    if (order == null || order.getDishes().isEmpty()) {
        continue; // 跳过空槽位
    }
    // 输出订单报告
    System.out.println("订单槽位" + i + ": " + order.toString());
}

关键注意点

  • 确认订单数据的非空判断逻辑:要匹配你实际的空订单定义(比如是null、空对象还是特定的默认值)
  • 如果是数据库存储的订单,查询时直接加条件WHERE 订单状态 != '空',避免拉取全量数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:44:13