如何合并未知数量的数组?

Posted

技术标签:

【中文标题】如何合并未知数量的数组?【英文标题】:How to merge unknown amount of arrays? 【发布时间】:2021-12-07 03:39:50 【问题描述】:

我正在构建一个驾驶执照考试模拟测试。用户可以选择多个类别来获取问题。我想从这个数组中取票并将它们全部放在一个数组中。 这是我的代码:

public Ticket[] GetTickets(int numOfCat)
    
        bool getTicks = true;
        if (getTicks)
        
            System.Console.WriteLine(DrivingLicenceStorage.Categories.Length);
            for (int i = 0; i < numOfCat; i++)
            
                System.Console.Write($"Enter category Ni + 1: ");
                var Ids = Convert.ToInt32(Console.ReadLine());
                if (Ids > DrivingLicenceStorage.Categories.Length)
                
                    System.Console.WriteLine("Invalid Input");
                    System.Console.WriteLine("Try Again");
                    i--;
                
                else
                
                    Tickets = DrivingLicenceStorage.Categories.ElementAt(Ids).Tickets;
                    getTicks = false;
                
            

        
        

        return Tickets;
    

问题是Tickets 从用户输入的最后一个类别中获取票证。如何合并所有选择类别的票?

【问题讨论】:

我觉得还需要注意的是,设置getTicks = false;是没有效果的,因为在进入for循环之前就已经检查过了,在初始检查之后就再也没有使用过了。 【参考方案1】:

对于具有动态元素数量的列表,数组不是正确的数据类型。您可以改用List&lt;Ticket&gt;

示例代码:

var ticketList = new List<Ticket>();
...
// repeat as often as required 
​ticketList.AddRange(DrivingLicenceStorage.Categories.ElementAt(Ids).Tickets); ​   
...
return ticketList.ToArray();

【讨论】:

@niniasabadze 如果您的答案适合您,请将其标记为已接受(答案左侧的复选标记)

以上是关于如何合并未知数量的数组?的主要内容,如果未能解决你的问题,请参考以下文章

合并数组里面的数据增加重复数量标记

count swap / comparisons合并排序算法的数量

88. 合并两个有序数组

# 88. 合并两个有序数组

数组---合并两个有序数组

合并两个有序数组