web-dev-qa-db-ja.com

リストの平均値

最初のクリックでrotorSpeedストップウォッチを開始し、2回目のクリックでlistに_rotorSpeed.ElapsedMilliseconds_を追加するコードを作成します。 2回目のクリックでストップウォッチをリセットし、再度計時を開始し、3回目のクリックで_rotorSpeed.ElapsedMilliseconds_をlistに追加します。コードにエラーはありませんが、デバッグするとdouble average = list.Average();でエラーが発生します

Stopwatch rotorSpeed = new Stopwatch(); List<double> list = new List<double>();

_private void button1_Click(object sender, EventArgs e)
{
    i++;
    //Getting rotor speed
    if (i != 2)
    {               
        if (rotorSpeed.IsRunning)
        {
            rotorSpeed.Stop();
            list.Add(rotorSpeed.ElapsedMilliseconds);
            rotorSpeed.Start();                   
        }
        else
        {
            rotorSpeed.Reset();
            rotorSpeed.Start();
        }
    }

    double average = list.Average();
    textBox2.Text = average.ToString();
}
_

これは私が得るエラーです:

System.Core.dllで「System.InvalidOperationException」タイプの未処理の例外が発生しました

追加情報:シーケンスには要素が含まれていません

7
rltcounter221

listは空なので、例外をスローしてAverage()を呼び出します。以下の行を変更します

double average = list.Average();

double average = list.Count > 0 ? list.Average() : 0.0;
14
Rahul
if (list.Count > 0)
{
    textBox2.Text = list.Average().ToString();
}
3
TigOldBitties
if (list.Count > 1)
{
    double average = list.Average();
    textBox2.Text = average.ToString();
    rotorSpeed.Stop();
}

これはうまく機能します。ありがとう!

0
rltcounter221