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

如何合并不定数量的Ticket数组 解决仅返回最后选中分类数据问题

问题原因
  • 原有代码每次选中合法分类时直接对Tickets变量赋值,会覆盖上一次选中分类的试题数据,仅保留最后一次的结果
  • 逻辑变量getTicks冗余且逻辑错误,第一次选中合法分类后就设为false,但后续还需要继续处理剩余分类的输入,该变量无存在意义
实现方案

用临时集合存储所有选中分类的试题,循环结束后统一转换为数组返回即可,同时修正了分类ID合法性判断的边界问题(原有判断漏了ID等于分类长度的越界场景,假设分类ID从0开始计数)

修改后代码
public Ticket[] GetTickets(int numOfCat)
{
    // 初始化临时集合存储所有选中的试题
    List<Ticket> allTickets = new List<Ticket>();
    Console.WriteLine(DrivingLicenceStorage.Categories.Length);
    
    for (int i = 0; i < numOfCat; i++)
    {
        Console.Write($"Enter category N{i + 1}: ");
        var categoryId = Convert.ToInt32(Console.ReadLine());
        // 修正边界判断,ID从0开始时大于等于分类总数就属于非法输入
        if (categoryId < 0 || categoryId >= DrivingLicenceStorage.Categories.Length)
        {
            Console.WriteLine("Invalid Input");
            Console.WriteLine("Try Again");
            i--;
            continue;
        }
        // 将当前分类的所有试题添加到临时集合
        allTickets.AddRange(DrivingLicenceStorage.Categories.ElementAt(categoryId).Tickets);
    }
    // 可选:如果需要对试题去重可调用Distinct(),前提是Ticket类已实现相等性比较逻辑
    // return allTickets.Distinct().ToArray();
    return allTickets.ToArray();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:54:02