0

ユーザーがコンソールに入力したすべての数値を取得したいとします。

15,30 45

次に、数値の「文字列」を異なる部分文字列に分割し、それを文字列の配列または文字列型のリストに格納します。また、最大最小平均と合計を取得したいと考えています。

  1. 部分文字列を配列または汎用リストに格納する必要がありますか? list.avg と list.sum を使用して平均と合計を取得できるように、リストに保存することを好みます

  2. 最大最小平均と合計を取得するには、各要素を整数に変換するか、リスト全体を別の型に変換する必要がありますか? もしそうなら、どのように変換しますか?

編集: ユーザーが何らかの形で文字や記号を混ぜた場合、ユーザーが数字を編集できるようにする方法はありますか?

4

2 に答える 2

0

このコードで試すことができます

void Main()
{
    double temp;
    List<double> input = new List<double>();
    string line = Console.ReadLine();
    string[] parts = line.Split(' ');
    foreach(string p in parts)
    {
        if(double.TryParse(p, out temp))
            input.Add(temp);
    }

    double sum = input.Sum();
    Console.WriteLine(sum);
}

ここでは、Console.ReadLine から入力を取得し、スペース区切りで行を分割します。すべての行サブパートは double 値に変換され (ロケール設定に従って double に変換できる場合のみ) List<double>、. この時点で、必要な情報を簡単に取得できます (IEnumerable.Sum、IEnumerable.Average など)。

于 2013-10-30T09:22:07.890 に答える
0

int[]まず、 の代わりにList<int>またはEnumerable.SumEnumerable.Average取る場合、平均または合計を取得することもできますIEnumerable<T>。したがって、決定は、後でコレクションを変更する必要があるかどうかによって異なります。後で項目を追加または削除しますか? 次に、ジェネリックを使用しList<T>ます。

string input = "15,30 45";
int i = int.MinValue;
List<int> result = input.Split(new[]{' ', ','}, StringSplitOptions.RemoveEmptyEntries)
    .Where(str => int.TryParse(str, out i))
    .Select(str => i)
    .ToList();
double avg = result.Average();
int sum =  result.Sum();
于 2013-10-30T09:26:16.697 に答える