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

如何在C#中将用户输入存入数组并遍历?求助解决索引越界错误

问题分析与解决

错误原因

  • 你初始化的数组是空数组(长度为0),数组一旦创建长度就固定,根本没有可写入的索引,执行vet[i] = input必然触发IndexOutOfRangeException索引越界错误。
  • for循环的条件i != -1逻辑完全错误:i从0开始每次自增1,永远不可能等于-1,循环会无限跑下去,只会持续触发越界错误。
  • 没有处理终止条件:你需要先读取输入,判断如果是-1就停止循环,而不是先让i自增再处理。

修正后的代码

用List<int>来动态存储输入(它可以自动扩容,适合不确定元素数量的场景),等输入结束后再转成数组,最后完成降序排序:

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

while (true)
{
    Console.WriteLine("请输入数值(输入-1停止):");
    // 用int.TryParse避免输入非数字时程序崩溃
    if (int.TryParse(Console.ReadLine(), out int input))
    {
        if (input == -1)
        {
            break; // 输入-1,终止循环
        }
        vetList.Add(input); // 将有效输入添加到列表
    }
    else
    {
        Console.WriteLine("请输入有效的整数!");
    }
}

// 转成数组(如果需要数组格式的话)
int[] vet = vetList.ToArray();
// 降序排序
Array.Sort(vet);
Array.Reverse(vet);

// 输出排序后的结果
Console.WriteLine("降序排列后的结果:");
foreach (int num in vet)
{
    Console.WriteLine(num);
}

关键改进点

  • 用List<int>替代固定长度数组,解决动态添加元素的问题。
  • 用while(true)配合break控制循环终止逻辑,更直观清晰。
  • 加入int.TryParse做输入校验,避免用户输入非整数时程序崩溃。
  • 补充了降序排序逻辑,完成你最初的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:05:22