0

今回は、各数字をスペースで区切ったリストとして数字を入力しました。私が書いたコードは、数値を行に配置する必要がありますが、文字列を 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();

        }
      }
    }
4

2 に答える 2

2

@xanatos が提案するように、各文字列を int に変換してループに追加するか、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();
于 2013-08-02T07:34:22.187 に答える