C# 找到所有的可能性

C# 找到所有的可能性,c#,C#,我正在制作一个程序,可以找到0-9之间所有可能的数字组合,并有一个4位数的窗口。e、 一,。 0000 0001 0002 0003 /ect 现在我已经试过了 int[] Possibilities = new int[4]; int x = 0, y = 0, z = 0, r = 0; for ( ; ; ) { x++; if (x == 9) {

我正在制作一个程序,可以找到0-9之间所有可能的数字组合,并有一个4位数的窗口。e、 一,。 0000 0001 0002 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,但我不确定


任何帮助都很好,谢谢。

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

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

根据您的源代码,您只需要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,但让我们保持简单…

这远没有您所做的复杂。可能的组合为0..n,其中n为10^位-1。所以变量组合=Enumerable.Range0,Math.Pow10,数字-1;在最后一个和if语句中,您还忘记了一个-,因此它是一些布尔值和可能性[3]==9。每当您得到x==9,您立即将其重置为零,这样您的中断测试就永远不会实现。@user3530423:在这种情况下,4…是否有特殊原因您必须逐位进行?查看您的源代码,我是否正确理解您的4位数字永远不应该包含“9”?请注意,在输出实际数字之前,只要x、y和z达到“9”,就将其重置为“0”。我不这么认为。我把每件事都复杂化了,我也这样做了: