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

C#实现数组指定索引区间随机数填充,现有代码运行异常求助

问题排查与修复方案

代码核心错误点

  • 循环逻辑完全错误:你把数组在a、b索引位置的值当成了循环遍历的上下限,而需求是遍历索引本身的区间。刚初始化的int数组所有元素默认值为0,你的循环判断i < arry[b]本质是i < 0,循环根本不会执行。
  • 未处理输入索引的大小顺序:如果用户输入的第一个索引大于第二个,直接用a、b作为上下限会导致循环无法启动。
  • 输入变量顺序不符合直觉:你先读入的是b再读入a,用户按起始、结束索引顺序输入时会出现参数颠倒问题。

修正后的可运行代码

// 初始化长度为15的数组
int[] arry = new int[15];
// 读取用户输入的两个索引
Console.WriteLine("请输入第一个索引:");
int index1 = int.Parse(Console.ReadLine());
Console.WriteLine("请输入第二个索引:");
int index2 = int.Parse(Console.ReadLine());
// 调用填充方法
Filling(index1, index2, arry);

static void Filling(int a, int b, int[] arry)
{
    // 确定索引上下限,兼容输入顺序
    int start = Math.Min(a, b);
    int end = Math.Max(a, b);
    // 边界校验,避免索引越界崩溃
    if (start < 0 || end >= arry.Length)
    {
        Console.WriteLine("输入的索引超出数组范围!");
        return;
    }
    Random rnd = new Random();
    // 遍历从start到end的所有索引,<=end确保端点被包含
    for (int i = start; i <= end; i++)
    {
        arry[i] = rnd.Next(3, 31);
        Console.WriteLine($"索引{i}的新值:{arry[i]}");
    }
}

优化说明

  • 增加索引边界校验,避免用户输入超出0~14的范围导致程序崩溃
  • 自动适配输入索引的顺序,不管用户先输入大索引还是小索引,都能正确生成区间内的随机数
  • 循环条件调整为i <= end,确保两个端点索引都会被赋值,符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:36:03