【问题标题】:returning random int from method to array从方法返回随机整数到数组
【发布时间】:2016-10-29 02:13:54
【问题描述】:

在我的代码中,我有一个静态 int 方法,它应该返回一个随机整数数组。问题是当我打印一个数组时,只有最后一个数字是随机整数,其他整数都是零。

static void Main(string[] args)
{
    int a = int.Parse(Console.ReadLine());
    int[] array = mtd(a);
    for (int i = 0; i < array.Length; i++)
    {
        Console.WriteLine(array[i]);
    }
}
public static int[] mtd(int b)
{
    int[] arr = new int[b];
    Array.Resize<int>(ref arr, b);
    Random rand = new Random();
    for (int i = 0; i < arr.Length; i++)
    {
        arr.SetValue(rand.Next(1, 5), arr.Length - 1);
    }
    return arr;
}

【问题讨论】:

  • 您是否设置了断点、单步执行代码、检查变量并查看Array.SetValue() 的文档,以便确认此代码是否符合您的预期?提示:你没有使用i...

标签: c# arrays methods return


【解决方案1】:

在您的方法mtdfor 循环中,您始终使用arr.Length - 1 设置数组arr 的最后一个值。请改用i

for (int i = 0; i < arr.Length; i++)
{
    arr[i] = rand.Next(1, 5);
}

或者arr.SetValue:

for (int i = 0; i < arr.Length; i++)
{
    arr.SetValue(rand.Next(1, 5), i);
}

【讨论】:

  • 好的,我现在明白了,所以问题出在我的 array.resize 行。我试图使用“i”,但当时无法使用。
  • 您不需要使用Array.Resize,因为您在使用new int[b]之前设置了数组的大小。
【解决方案2】:

工作一:

public static int[] mtd(int b)
    {
        int[] arr = new int[b];
        Random rand = new Random();
        for (int i = 0; i < arr.Length; i++)
        {
            arr.SetValue(rand.Next(1, 5), i);
        }
        return arr;
    }

编辑:顺便说一句 Array.resize 在这里没用,您已经定义了数组的长度。 (new int[b]设置数组长度为b)

您的问题是您从未使用过i,因此您只需设置数组最后一个值的值。

【讨论】:

    【解决方案3】:

    我修改并简化了您的代码:

        public static int[] mtd(int b)
        {
            int[] arr = new int[b];
            Random rand = new Random();
            for (int i = 0; i < arr.Length; i++)
                arr[i] = rand.Next(1, 5);
            return arr;
        }
    

    【讨论】:

    • arr[i] = rand.Next(1, 5) 看起来好多了。
    • 谢谢。 @Adi543。
    猜你喜欢
    • 2019-02-20
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多