在我的代码中,我有静态int方法,它应该返回一个随机整数数组。问题是当我打印一个数组时,只有最后一个数字是随机的int,而其他的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;
}
答案 0 :(得分:3)
在方法for
的{{1}}循环中,您始终使用mtd
设置数组arr
的最后一个值。请改用arr.Length - 1
:
i
或for (int i = 0; i < arr.Length; i++)
{
arr[i] = rand.Next(1, 5);
}
:
arr.SetValue
答案 1 :(得分:0)
工作一:
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
,因此您只需设置数组最后一个值的值。
答案 2 :(得分:0)
我修改并简化了您的代码:
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;
}