繁体   English   中英

将字符串转换为C#

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM