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

C#中如何在for循环中调整数组大小并持续添加用户输入?

C# 动态向数组添加用户输入的解决方案

原代码的问题在于每次创建新数组时,仅复制了当前迭代位置的元素,之前输入的数据没有被转移到新数组中,导致每次扩容后旧数据丢失;同时for循环的条件依赖数组长度,无法持续接收用户输入。

方案一:手动扩容数组并复制元素

手动处理数组扩容时,需要将原数组的所有元素复制到新数组中,再添加新元素:

int[] lengthArray = new int[0];

while (true)
{
    Console.WriteLine("请输入一个整数(输入非整数结束):");
    string input = Console.ReadLine();
    if (!int.TryParse(input, out int num))
    {
        break;
    }

    // 创建长度+1的新数组
    int[] temp = new int[lengthArray.Length + 1];
    // 复制原数组所有元素到新数组
    Array.Copy(lengthArray, temp, lengthArray.Length);
    // 将新元素添加到新数组末尾
    temp[lengthArray.Length] = num;
    // 更新原数组引用
    lengthArray = temp;
}

// 输出所有输入的整数
Console.WriteLine("已输入的整数列表:");
foreach (int num in lengthArray)
{
    Console.WriteLine(num);
}

方案二:使用List(更简洁高效)

C#的List<int>是动态集合,内部会自动处理扩容逻辑,无需手动复制元素:

List<int> lengthList = new List<int>();

while (true)
{
    Console.WriteLine("请输入一个整数(输入非整数结束):");
    string input = Console.ReadLine();
    if (!int.TryParse(input, out int num))
    {
        break;
    }

    // 直接添加元素到集合
    lengthList.Add(num);
}

// 如需转换为数组,调用ToArray()方法
int[] lengthArray = lengthList.ToArray();

// 输出结果
Console.WriteLine("已输入的整数列表:");
foreach (int num in lengthArray)
{
    Console.WriteLine(num);
}

内容的提问来源于stack exchange,提问作者Gin-Sweets

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:55:32