Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从一个很长的数字求和_C#_Math - Fatal编程技术网

C# 从一个很长的数字求和

C# 从一个很长的数字求和,c#,math,C#,Math,假设我让用户输入号码:1298743257884834…(只要用户需要) 让程序告诉你它们是多少位 然后通过求和给出结果=?提示:使用在系统中找到的数值。首先,您可以通过以下方式知道位数: string digits = TextBox1.Text; long digitsnumber = digits.Length; 然后,要对每个数字求和,需要像字符数组一样循环字符串,并使用System.char的GetNumericValue方法将car值转换为整数: int sum = 0; fore

假设我让用户输入号码:1298743257884834…(只要用户需要)

让程序告诉你它们是多少位


然后通过求和给出结果=?

提示:使用在
系统中找到的数值。首先,您可以通过以下方式知道位数:

string digits = TextBox1.Text;
long digitsnumber = digits.Length;
然后,要对每个数字求和,需要像字符数组一样循环字符串,并使用
System.char的
GetNumericValue
方法将car值转换为整数:

int sum = 0;
foreach (var c in digits)
{
   if (Char.IsNumber(c))
   {
       sum += (int)Char.GetNumericValue(c);
   }
}
总和将是您的结果。

使用LINQ

string input = // get input from console, textbox, ...
int inputLength = input.Length; // get number of digits, although you don't need it here
int sum = input.Sum(c => int.Parse(c.ToString())); // summarize

这闻起来像是家庭作业……尝起来也像。我只需要一个字符串,然后在上面迭代。无需转换为数字。为什么
ToCharArray()
string
implements
IEnumerable
您有什么建议?只需
input.Sum(…)
。您可以在实现
IEnumerable
的任何类型上使用LINQ。由于
string
已经这样做了,所以在使用LINQ之前不需要转换为数组。我不知道
string
实现了
IEnumerable
,感谢您指出。您也不需要
tocharray()
foreach
支持
string
。您可以直接使用
foreach(数字形式的var c)
。您缺少错误检查。任何非数字字符都会自动将总和递减1。我同意,我编辑了代码以改进它。