C#程序返回莫尔斯代码,用于无效的数字

时间:2014-08-03 12:27:28

标签: c#

我正在尝试制作一个程序:当给出一个4位数字(例如,1001)时,它会对该数字的数字求和,对于1001这是1 + 0 + 0 + 1 = 2,比它找到的数字6个数字从1到6的所有序列(包括排列,即1 * 1 * 1 * 1 * 1 * 2不同于2 * 1 * 1 * 1 * 1 * 1),其乘积为该数字。

结果应按照以下格式打印在控制台上:每个序列包含6个数字,其莫尔斯表示形式,用单个管道分隔:1为.----,2为..---:{ {1}},在新行上显示下一个排列:.----|.----|.----|.----|..---|,依此类推。

问题是,我的解决方案没有显示正确的答案,甚至没有正确的答案。

这是我的代码(如果可能的话,请告诉我我的错误在哪里,而不是LINQ和正则表达式问题解决问题的一线解决方案,上帝知道什么):

.----|.----|.----|..---|.----|

1 个答案:

答案 0 :(得分:2)

很多你的for循环条件都是指i而不是j,k,l和m。增量部分也是如此。例如:

for (int j = 1; i < 6; i++)

应该是

for (int j = 1; j < 6; j++)

此外,如果范围是1到6,则需要更改&lt;到&lt; =,见:

for (int i = 1; i <= 6; i++)

您不需要将字符串转换为字符串数组以获取数字btw的int数组,所以这是正确的:

for (int i = 0; i < 4; i++)
{
    digitsChar[i] = n[i].ToString();
}
int[] digits = new int[digitsChar.Length];
for (int i = 0; i < 4; i++)
{
    digits[i] = Convert.ToInt32(digitsChar[i]);
}

你可以这样做(为LINQ sry):

var digits = n.Select(c=>(int)char.GetNumericValue(c) ).ToArray();