2014-04-27 130 views
-2

我得到一個函數,生成一個隨機數(0-97),我已經做到了,所以它不會重複的數字。c#窗體窗體應用程序崩潰

但是,我的應用程序崩潰時,所有數字已被使用,而不是顯示MessageBox。任何幫助?

「#」表示該號碼已被選中。

功能的隨機數:

private int RandomJeton() 
    { 
     int i, ok = 0; 
     for (i = 0; i <= 97; i++) 
      if (!Sac[i].Equals("#")) ok = 1; 
     if (ok == 1) 
     { 
      Random r = new Random(); 
      int poz = r.Next(0, 97); 
      while (String.Equals(Sac[poz], "#")) 
       poz = r.Next(0, 97); 
      return poz; 
     } 
     else return 101; 
    } 

功能,使用隨機數生成器:

private void button_RClick(object sender, MouseEventArgs e) 
    { 
     if (e.Button == MouseButtons.Right) 
     { 
      int x = RandomJeton(); 
      if (x == 101) { MessageBox.Show("Ai ramas fara jetoane", "Oops!"); ((Button)sender).Visible = false; } 
      else 
      { 
       ((Button)sender).Text = Sac[x]; 
       Sac[x] = "#"; 
      } 
     } 
     copySuportCaBackup(); 
    } 
+0

可以通過錯誤日誌嗎? – MrMins

+0

沒有..它只是繼續運行,沒有收到任何命令,直到我從任務管理器關閉它。 – user3574409

+1

從1到3之間挑選3個唯一的隨機數字。現在選擇另一個。 –

回答

1

您的問題是,隨意的最大數量是exclusive.So在這個循環:

for (i = 0; i <= 97; i++) 

您正在迭代,直到Sac[97],但您永遠不會指定值Sac[97],因爲你永遠不會從你的函數返回97r.Next(0, 97);將返回96 max.So您的while循環永遠不會在您的所有物品等於#後結束。您需要將r.Next(0, 97);更改爲r.Next(0, 98);i <= 97;i < 97;

+0

謝謝!我想。下一個(x,y);從區間[x,y]中選出一個數字。 – user3574409

相關問題