找到所有可能性C#

时间:2014-04-17 01:51:21

标签: c#

我正在制作一个程序,可以找到0到9之间的所有可能数字组合和4位数窗口。 E.I. 0000 0001 技术 0003 / ECT

现在我试过......

int[] Possibilities = new int[4];

        int x = 0, y = 0, z = 0, r = 0;

        for ( ; ; )
        {
            x++;
            if (x == 9)
            {
                x = 0;
                y++;
            }

            if (y ==9)
            {
                y = 0;
                z++;
            }

            if (z == 9)
            {
                z = 0;
                r++;
            }

            Possibilities[0] = x;
            Possibilities[1] = y;
            Possibilities[2] = z;
            Possibilities[3] = r;

                if (Possibilities[0] == 9 && Possibilities[1] == 9 && Possibilities[2] == 9 & Possibilities[3] == 9)
            {
                break;
            }

            Console.Write(Convert.ToString(Possibilities[0]) + Convert.ToString(Possibilities[1]) + Convert.ToString(Possibilities[2]) + Convert.ToString(Possibilities[3]) + " "); 

我只是得到一个循环无限的程序,并没有做我想要的。 我相信我的问题是,如果上面的一个是9,我将变量设置为0,但我不确定。

任何帮助都很可爱,谢谢。

2 个答案:

答案 0 :(得分:7)

我很困惑,为什么你不能这样做:

for(int i = 0; i < 10000; i++) {
    Console.WriteLine(i.ToString("0000"));
}

答案 1 :(得分:2)

你想要的只是0到9999之间的数字(根据你的源代码不包括9999),输出固定为带有前导零的4位数字:

for (int i=0; i < 9999; ++i)
    Console.WriteLine("{0:0000}", i);

只是为了好玩,仔细查看源代码会发现它会跳过任何'9'数字。我不知道这是故意还是错误。我认为这是一个错误,但无论如何......如果是故意的,下面的代码片段将跳过任何包含'9'的数字:

for (int i=0; i < 9999; ++i)
{
    string s = i.ToString("0000");
    if (!s.Contains("9"))
        Console.WriteLine(s);
}

(还有其他一些方法可以做到这一点,例如Linq,但让我们保持简单......)