【发布时间】:2014-12-09 16:00:55
【问题描述】:
所以我正在尝试制作一个随机数生成器:
private static void init()
{
int[] integ = new int[10];
Random random = new Random();
// init
foreach (int integer in integ)
{
integ[integer] = rand.Next(5,35);
}
foreach (int b in integ)
{
Console.WriteLine("Byte = " + b);
}
}
static void Main(string[] args)
{
init();
Console.ReadKey();
}
但由于某种原因,当我运行它时,它会打印:
Byte = (*random number here*)
Byte = 0
Byte = 0
etc...
我多次运行它以确保每次只有第一个具有非零数字。
任何建议将不胜感激,在此先感谢。
【问题讨论】:
-
你已经用
Length10 初始化了一个数组,但所有的默认值都是int的0。所以你总是覆盖第一个int(integ[0])。您想使用for-loop 来初始化数组中的所有值。 -
foreach (int integer in integ)产生 10 次 0。使用for循环。 -
@Mechanic45: 不,这是一个
foreach,它总是产生0,因为数组只包含零,因此总是覆盖索引0:integ[0] = rand.Next(5,35)。 -
@Mechanic45
foreach循环遍历integ,integer的值是数组中每个元素的值,而不是索引。由于 integ 初始化为 0 数组,因此integ[integer]始终为integ[0] -
@Mechanic45:仅当您使用在循环中增加的附加计数器变量时。但是你真的应该使用 for 循环,因为它是专门为此目的而设计的。