C# 添加一个';如果';陈述

C# 添加一个';如果';陈述,c#,if-statement,generator,C#,If Statement,Generator,我正在尝试让一个数字发生器工作,到目前为止进展顺利,但最近我遇到了一些问题。所以我要做的是用一个默认字符串生成一个生成器,然后在它的末尾添加一些数字。我已经弄清楚了。现在,我正试图使它,如果我的发电机吐出的数字是'5',那么下一个数字将必须是'1'。我不完全确定这是否可行,但以下是我的代码: public string GenerateRandomCode(int length) { string charPool = "ABCDEF1234567890";

我正在尝试让一个数字发生器工作,到目前为止进展顺利,但最近我遇到了一些问题。所以我要做的是用一个默认字符串生成一个生成器,然后在它的末尾添加一些数字。我已经弄清楚了。现在,我正试图使它,如果我的发电机吐出的数字是'5',那么下一个数字将必须是'1'。我不完全确定这是否可行,但以下是我的代码:

    public string GenerateRandomCode(int length)
    {
        string charPool = "ABCDEF1234567890";
        StringBuilder rs = new StringBuilder();
        Random random = new Random();

        for (int i = 0; i < length; i++)
        {
              rs.Append(charPool[(int)(random.NextDouble() * charPool.Length)]);
        }
        return rs.ToString();
    }

    public string Random(int length)
    {
        string charPool = "A457";
        StringBuilder rs = new StringBuilder();
        Random random = new Random();

        for (int i = 0; i < length; i++)
        {
            rs.Append(charPool[(int)(random.NextDouble() * charPool.Length)]);
        }
        return rs.ToString();
    }

    public string Char(int length)
    {
        string charPool = "ABF35689";
        StringBuilder rs = new StringBuilder();
        Random random = new Random();

        for (int i = 0; i < length; i++)
        {
             rs.Append(charPool[(int)(random.NextDouble() * charPool.Length)]);
        }
        return rs.ToString();
     }

     public string Next(int length)
     {
         string charPool = "F01";
         StringBuilder rs = new StringBuilder();
         Random random = new Random();

         for (int i = 0; i < length; i++)
         {
             rs.Append(charPool[(int)(random.NextDouble() * charPool.Length)]);
         }
         return rs.ToString();
    }

    private void button1_Click(object sender, EventArgs e)
    {
       textBox1.Text = "00000001008" + Random(1) + "000" + Char(1) + Next(1) + GenerateRandomCode(15);
    }
  }
}
公共字符串生成器域代码(int-length)
{
字符串charPool=“ABCDEF1234567890”;
StringBuilder rs=新的StringBuilder();
随机=新随机();
for(int i=0;i

因此,如果Char='5',我想得到下一个等于'1'

舒尔,你可以。记住最后一个角色,然后采取行动

// ...
char c = '-';
for (int i = 0; i < length; i++) {
    if (c == '5') {
        c = '1';
    } else {
        c = charPool[random.Next(charPool.Length)];
    }
    rs.Append(c);
}
// ...
/。。。
字符c='-';
for(int i=0;i

random.Next(charPool.Length)
自动生成一个范围为[0…charPool.Length-1]的整数。

不确定您的目标,但可能是这样的(?):


因此,每当Char(1)的方法调用返回字符串“5”时,sNext将保持其初始值“1”。否则,如果Char(1)不是“5”,则sNext将被分配给Next(1)的调用结果。

我这样做,结果生成了数字,Char结果是5,但Next是0I更正了我的答案。我测试了索引而不是字符。现在已经修好了。抱歉.00000001008-默认字符串| 5-随机| 000 | 5-字符| 0-下一个|这就是最终的结果generated@Daktota,有什么问题吗?我的意思是,如果这不是你所期望的,请举例说明你所期望的输出。@Dakota,我在你回答时编辑了我的评论。虽然我所说的仍然是真的,但我认为这不是一个增进你知识的好方法,嗯……:)0000000 1008500051而不是0000000 1008500050我明白,我只是没有我应该具备的职业道德have@Dakota,现在我明白你的评论了。你说下一个是零。在我看来,你的按钮点击方法与我在回答中发布的版本不同。请检查,如果你的代码与我的完全相同。(请注意,
if(sChar!=“5”)
除了保留
sNext=“1”
——显然您的代码是不同的……)
private void button1_Click(object sender, EventArgs e)
{
   string sRandom = Random(1);
   string sChar = Char(1);
   string sNext = "1";
   if (sChar != "5") sNext = Next(1);

   textBox1.Text = "00000001008" + sRandom + "000" + sChar + sNext + GenerateRandomCode(15);
}