我正在尝试制作一个程序:当给出一个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和正则表达式问题解决问题的一线解决方案,上帝知道什么):
.----|.----|.----|..---|.----|
答案 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();