C# 抽奖列表验证
我正在制作一个抽奖c#程序,其中随机抽取1-10个数字,并将其放入C# 抽奖列表验证,c#,random,arraylist,C#,Random,Arraylist,我正在制作一个抽奖c#程序,其中随机抽取1-10个数字,并将其放入ArrayList中,如果该数字已经抽取,则不应将其放入数组中……我的问题是,即使我验证了它,它仍然会添加到数组中 这是我的密码: Console.WriteLine("RAFFLES"); ArrayList array = new ArrayList(); Random rnd = new Random(); ret: Console.Write("Press 1 to draw"); int draw = int.Pars
ArrayList
中,如果该数字已经抽取,则不应将其放入数组中……我的问题是,即使我验证了它,它仍然会添加到数组中
这是我的密码:
Console.WriteLine("RAFFLES");
ArrayList array = new ArrayList();
Random rnd = new Random();
ret: Console.Write("Press 1 to draw");
int draw = int.Parse(Console.ReadLine());
switch(draw)
{
case 0: break;
case 1:
if (array.Contains(rnd.Next(1, 11)))
{
Console.WriteLine("Already Exist");
}
else
array.Add(rnd.Next(1, 11));
goto ret;
case 2:
foreach (var a in array)
Console.WriteLine(a);
break;
}
您应该将第一个
rnd存储在变量中。下一个(1,11)
:
int x = rnd.Next(1, 11);
if (array.Contains(x))
{
Console.WriteLine("Already Exist");
}
else
array.Add(x);
您没有存储的结果
rnd.Next(1, 11)
因此,当它点击else语句时,它会再次运行rnd.next(),以绕过您的检查获得一个新的数字
应该是:
case 1:
int rndNumber = rnd.Next(1,11);
if (array.Contains(rndNumber))
{
Console.WriteLine("Already Exist");
}
else
array.Add(rndNumber);
通常情况下,您会洗牌并根据需要取尽可能多的值(如果您正确地编写代码,还可以通过“checkif-take”避免最后的无限循环)。否则,请逐步通过代码并提出。你的goto让我想呕吐。=)我不确定它是否达到呕吐的程度,但它确实让我的胃不稳定,可能会变得更糟。我相信(根据此作业通常的设置方式)OP也需要
,而生成随机数-否则它不会画任何东西。