【问题标题】:Array: partial filling数组:部分填充
【发布时间】:2021-12-16 01:23:31
【问题描述】:

对于学校作业,我需要编写一个程序,其中用户键入两个整数(表示索引),然后一个方法在这两个数字之间生成随机数。例如:如果用户键入 3 和 8 并且数组长度为 15,那么一个方法将在数组中的索引 3 和索引 8 之间生成随机数。我正在尝试这样的事情,但它不起作用:

        int[] arry = new int[15];

        int b = int.Parse(Console.ReadLine());
        int a = int.Parse(Console.ReadLine());

        Filling(a, b, arry);

        static void Filling(int a, int b, int[] arry)
        {
            Random rnd = new Random();

            for (int i = arry[a]; i < arry[b]; i++)
            {
                arry[i] = rnd.Next(3, 31);
                Console.WriteLine(arry[i]);
            }
        }

【问题讨论】:

  • for (int i = arry[a]; i &lt; arry[b]; i++) -- 你可能希望ia 循环到b,即for (int i = a; i &lt; b; i++)。由于arry 开始时包含全零,arry[a]arry[b] 都将返回 0
  • 旁注:How to debug small programs 相信我,值得花每一秒阅读和理解 Visual Studio 背后的大师所说的话

标签: c# arrays


【解决方案1】:

如 cmets 中所述,您希望循环在 ab 之间进行迭代。不在存储在数组中的 a 和 b 的值之间。即

        for (int i = a; i < b; i++)
        {
            arry[i] = rnd.Next(3, 31);
            Console.WriteLine(arry[i]);
        }

您可能还想添加一些边界检查以确保 a 和 b 有效。这可以通过在进入循环之前夹紧索引值来完成。

        a = Math.Max(a, 0);
        b = Math.Min(b, arry.Count);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多