2014-04-27 31 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