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

c#windows窗体应用程序崩溃

您的问题是,最大随机数是互斥的。所以在这个循环中:

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

您一直在迭代,直到Sac[97],但您从未为Sac[97]赋值,因为您从未从函数中返回97r.Next(0, 97);将返回最大96。因此,在所有项目都等于#之后,while循环永远不会结束。您需要将r.Next(0, 97);更改为r.Next(0, 98);或将i <= 97;更改为i < 97;