【发布时间】:2013-04-04 18:45:34
【问题描述】:
我正在尝试计算 7 位数字的所有组合。每个数字基本上可以占据两个值,这就是我称之为二进制数的原因。
数字由 FNMSDPL 表示。基本上我想要所有值的组合及其总和。
我写了下面的代码,但它不起作用。
F[0] = 9.29;
F[1] = -4.47;
N[0] = 9.64;
N[1] = -5.77;
M[0]= -7.48;
M[1] = -2.13;
S[0] = 25.85;
S[1]= -3.55;
D[0]= 12.14;
D[1] = -4.90;
P[0] = 8.65;
P[1]= -0.85;
L[0] = 9.14;
L[1]= -1.73;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
for (int k = 0; k < 2; k++)
{
for (int l = 0; l < 2; k++)
{
for (int m = 0; m < 2; m++)
{
for (int n = 0; n < 2; n++)
{
for (int o = 0; 0 < 2; o++)
{
double count = F[i] + M[j] + L[k] + S[l] + D[m] + P[n] + L[o];
System.Console.WriteLine(count);
}
}
}
}
}
}
}
错误信息:
索引超出了数组的范围。
我在“double count =”行收到上述错误。
【问题讨论】:
-
当您说“它不起作用”时,请更具体地说明您的意思。您可能希望在调试器中单步执行代码。这应该会立即揭示一个问题。
-
而不是提供代码表达示例,说明 “7 位二进制数的组合”是什么意思
-
一个明确的错误是
for (int o = 0; 0 < 2; o++)行。0 < 2始终为真 -> 无限循环。我们从中学到不要使用o作为变量名,因为它很容易与0混淆。 -
@halex 很好地证明了使用好的变量名的原因,或者至少是从不使用
l (el)(是一个???)或o (oh)作为变量名的原因。
标签: c# for-loop combinations