2015-10-20 78 views
-1

我正在製作一個抽獎c#程序,其中1-10個數字的隨機將被繪製,並把它放在ArrayList,如果數量已經繪製,那麼它不應該放在陣列中...我的問題即使我驗證它,它仍然添加在數組上。抽獎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; 
} 
+0

通常你會洗牌,並採取你需要儘可能多的(也避免在年底無限循環,你應該有「是否採取」如果你做了正確的代碼) 。否則,請逐步完成代碼並提出[MCVE]。 –

+0

你的goto讓我想吐。 =) – archon

+0

不知道它是否達到了嘔吐的水平,但它確實使我的胃部不穩定,可能會惡化。 – andleer

回答

3

,可以儲存中的第一個變量rnd.Next(1, 11)

int x = rnd.Next(1, 11); 
if (array.Contains(x)) 
{ 
    Console.WriteLine("Already Exist"); 
} 
else 
    array.Add(x); 
+0

我相信(根據這個任務通常是如何設置的)OP還需要'while'來產生隨機數 - 否則它不會繪製任何東西。 –

2

你是不是存儲

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);