C# 从一个很长的数字求和
假设我让用户输入号码:1298743257884834…(只要用户需要) 让程序告诉你它们是多少位C# 从一个很长的数字求和,c#,math,C#,Math,假设我让用户输入号码:1298743257884834…(只要用户需要) 让程序告诉你它们是多少位 然后通过求和给出结果=?提示:使用在系统中找到的数值。首先,您可以通过以下方式知道位数: string digits = TextBox1.Text; long digitsnumber = digits.Length; 然后,要对每个数字求和,需要像字符数组一样循环字符串,并使用System.char的GetNumericValue方法将car值转换为整数: int sum = 0; fore
然后通过求和给出结果=?提示:使用在
系统中找到的数值。首先,您可以通过以下方式知道位数:
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
implementsIEnumerable
您有什么建议?只需input.Sum(…)
。您可以在实现IEnumerable
的任何类型上使用LINQ。由于string
已经这样做了,所以在使用LINQ之前不需要转换为数组。我不知道string
实现了IEnumerable
,感谢您指出。您也不需要tocharray()
foreach
支持string
。您可以直接使用foreach(数字形式的var c)
。您缺少错误检查。任何非数字字符都会自动将总和递减1。我同意,我编辑了代码以改进它。