C# 找到所有的可能性
我正在制作一个程序,可以找到0-9之间所有可能的数字组合,并有一个4位数的窗口。e、 一,。 0000 0001 0002 0003 /ect 现在我已经试过了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) {
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”。我不这么认为。我把每件事都复杂化了,我也这样做了: