我如何Concat一个char随机数组的循环?

时间:2014-04-03 02:45:06

标签: c# loops variables

我有一个像这样的字符数组:

char[] true_false = new char[2]{'V','F'};  

变量随机:

Random rand = new Random();

我有一个名为generate_code的字符串,初始值为true_false[rand.Next(0, 2)].ToString();

string generate_code = true_false[rand.Next(0, 2)].ToString();

用户将设置int lenght_of;

int lenght_of = int.Parse(Console.ReadLine());

所以,我要做的是:用户将定义lenght_of generate_code的长度,如下所示:

 for(int i =0; i < lenght_of;i++){
    generate_code = generate_code + (char)true_false[rand.Next(0, 2)];
 }

但问题是我需要一个固定变量,如:

generate_code = (char)true_false[rand.Next(0, 2)] + (char)true_false[rand.Next(0, 2)];

如果lenght_of =2;并且我有一个循环会将generate_code值改变十次。我该怎么做? **我希望你们明白这很难解释。

示例:

lenght_of = 2;

 //Example "FF"; 
generate_code = true_false[rand.Next(0, 2)] + true_false[rand.Next(0, 2)];

for(int i =0; i < 10;i++) { 
    Console.WriteLine(generate_code); 
} //Output expected: "FF" "VV" "FV" "VF" "FF"

3 个答案:

答案 0 :(得分:1)

您的问题是,您要将两个char添加到一起。 char是一种数字类型。因此,您将获得数字作为结果。此外,您的generate_code作业必须在您的循环中:

for(int i =0; i < 10;i++) { 
    generate_code = string.Format("{0}", generateCodeWithLength(rand, true_false, lenght_of));
    Console.WriteLine(generate_code); 
}

将代码生成包含在接受长度的方法中:

public string generateCodeWithLength(Random rand, char[] true_false, int length) {
    var result = new StringBuilder(length);

    for (var i = 0; i < length; i++) {
        result.Append(true_false[rand.Next(0, 2)]);
    }

    return result.ToString();
}

或者更好..一个StringBuilderClicky clicky live example

答案 1 :(得分:0)

您需要在循环的每次迭代中刷新generate_code:

for(int i =0; i < 10;i++) { 
   int loopCounter = 0;
   while (loopCounter < length_of)
   {
       generate_code += true_false[rand.Next(0, 2)]; //Add one more char to generate_code
       loopCounter += 1;
   }
   Console.WriteLine(generate_code); 
} //Output expected if length_of = 3: "FFV" "VFV" "FVF" "FFF" "VVV"

这样,每个输出都是随机的。

答案 2 :(得分:0)

或者你也可以这样做:

for(int i =0; i < 10;i++) {
    Console.WriteLine(string.Format("{0}{1}", true_false[rand.Next(0, 2)] + true_false[rand.Next(0, 2)]));
}