抽奖数组列表验证

本文关键字:验证 列表 数组 | 更新日期: 2023-09-27 18:18:38

我正在制作一个抽奖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.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.Next(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语句时,它再次运行rand .next()以绕过检查获得一个新数字。

应该是:

case 1:
    int rndNumber = rnd.Next(1,11);
    if (array.Contains(rndNumber))
    {
        Console.WriteLine("Already Exist");
    }
    else
        array.Add(rndNumber);