[英]Converting string to sum C#
所以这一次,我以列表形式输入了数字,并用空格分隔了每个数字。 现在,我编写的代码将数字按原样放置在一行中,但是当我尝试将字符串转换为Int32时,失败了,这杀死了程序并且没有给我总和。 我对错误的理解还不够,无法准确地解释错误是什么。 一个人如何将拆分的字符串数组转换为数字以产生总和?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Dynamic_Entry
{
class Program
{
static void Main()
{
Console.Write("Please provide a list of numbers, separated by spaces: ");
string list = Console.ReadLine();
string[] parts = list.Split(' ');
int sum = 0;
for (int i = 0; i < parts.Length ; i++)
{
Console.WriteLine("{0, 5}", parts[i]);
}
sum = Convert.ToInt32(list);
Console.WriteLine("-----");
Console.Write("{0, 5}", sum);
Console.ReadLine();
}
}
}
for (int i = 0; i < parts.Length; i++)
{
Console.WriteLine("{0, 5}", parts[i]);
sum += Convert.ToInt32(parts[i]);
}
固定。
您试图将“ 1 2 3 4 5 55”转换为int
。 您必须将“ 1”,“ 2”,“ 3” ...转换为int
并将它们加到sum
。
我要补充一点,如果您想分割字符串,最好做些类似的事情
string[] parts = list.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
这样,数字之间的多个空格就被删除了(例如1 2 3)
Andrei发布了一个非常简单的使用LINQ的示例。
int sum = parts.Sum(p => Convert.ToInt32(p));
这会使您超出for
周期。 它将转换为int
并添加所有“部分”。 这意味着“对于每个part
将其转换为int
并相加。返回总和”。
您可以将每个字符串转换为int,然后按照@xanatos的建议将它们添加到循环中,也可以使用LINQ和Enumerable.Sum (),例如:
var sum=parts.Sum(part=>Convert.ToInt32(part));
要么
var sum=parts.Select(part=>Convert.ToInt32(part))
.Sum();
真正的好处是当您拥有更复杂的表达式时,例如。 当您需要过滤值,提取属性等时
例如,您可以像这样过滤大于3的值:
var sum=parts.Select(part=>Convert.ToInt32(part))
.Where(num=>num>3)
.Sum();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.