c#windows窗体应用程序崩溃
本文关键字:崩溃 应用程序 窗体 c#windows | 更新日期: 2023-09-27 18:00:27
我得到了一个函数,它生成一个随机数(0-97),我制作了它,这样它就不会重复数字。
但是,当使用了所有数字而不是显示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();
}
您的问题是,最大随机数是互斥的。所以在这个循环中:
for (i = 0; i <= 97; i++)
您一直在迭代,直到Sac[97]
,但您从未为Sac[97]
赋值,因为您从未从函数中返回97
。r.Next(0, 97);
将返回最大96
。因此,在所有项目都等于#
之后,while循环永远不会结束。您需要将r.Next(0, 97);
更改为r.Next(0, 98);
或将i <= 97;
更改为i < 97;