【问题标题】:create a random loop until a statement is true创建一个随机循环,直到语句为真
【发布时间】:2013-01-23 14:00:58
【问题描述】:

如果我想让程序生成一个随机数然后re-read/loopelse if statement直到找到类似这样的语句if(button1.Text == ""),随机数只需要到9 .

这是我的代码,

    private void button1_Click(object sender, EventArgs e)
    {
          var rc = new Random();
          storeRI = rc.Next(1, 9);

            if (storeRI == 1)
            {
                if (button1.Text == "")
                {
                    button1.Text = "X";
                }
                else
                {
                   //Need to generate another random number
                    //And read the else if statement again... how?
                }

            }

            else if (storeRI == 2)
            {
                if (button1.Text == "")
                {
                    button1.Text = "X";
                }
                else
                {
                   //Need to generate another random number
                    //And read the else if statement again... how?
                }

            }

【问题讨论】:

  • 我不太明白这段代码的用途。
  • 我首先想到的是while loop。然后,我向下浏览,看看其他人回答了什么,然后宾果游戏!我们有同样的想法。 while(I_havent_find_the_answer) do

标签: c# winforms visual-studio-2012 random-sample


【解决方案1】:
private void button1_Click(object sender, EventArgs e)
{
      var rc = new Random();
      do
      {
        storeRI = rc.Next(1, 9);

        if (storeRI == 1)
        {
            if (button1.Text == "")
            {
                button1.Text = "X";
            }
        }

        else if (storeRI == 2)
        {
            if (button1.Text == "")
            {
                button1.Text = "X";
            }
        }
      } while (button1.Text == "");
 }

【讨论】:

  • 谢谢!正是我需要的!
【解决方案2】:

if 语句放入while() 循环中。然后有一个条件来执行break; 语句来终止循环:

while(button1.Text == "")
{
    if (storeRI == 1)
    {
        if (button1.Text == "")
        {
            button1.Text = "X";
        }
        else
        {
             //Need to generate another random number
             storeRI = rc.Next(1, 9);
        }

    }

    else if (storeRI == 2)
    {
     ...
    }
    else
        break;
}

【讨论】:

    【解决方案3】:
    var rc = new Random();
    int[] numbers = { 1, 2 }; // numbers from your if..else blocks
    
    do {
      storeRI = rc.Next(1, 9);
    
      if (!numbers.Contains(storeRI))
          break; // not matched any if..else block
    
      if (button1.Text == "")
      {
          button1.Text = "X";
          break; // set text and break loop
      }
    
    } while(true); // generate new number and do check again
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-10
      • 2013-08-05
      • 2012-09-21
      • 2021-09-24
      • 1970-01-01
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      相关资源
      最近更新 更多