列表的平均值

时间:2016-09-24 17:37:08

标签: c# list stopwatch

我想制作第一次点击开始rotorSpeed秒表的代码,然后在第二次点击时将rotorSpeed.ElapsedMilliseconds添加到list。在第二次单击时重置秒表并再次开始计时,然后在第三次单击时再次将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();
}

这是我得到的错误:

  

&gt; System.Core.dll中出现未处理的“System.InvalidOperationException”类型异常

     

附加信息:序列不包含任何元素

3 个答案:

答案 0 :(得分:13)

您的list为空,因此调用Average()会导致异常。更改以下行

double average = list.Average();

double average = list.Count > 0 ? list.Average() : 0.0;

答案 1 :(得分:3)

if (list.Count > 0)
{
    textBox2.Text = list.Average().ToString();
}

答案 2 :(得分:0)

if (list.Count > 1)
{
    double average = list.Average();
    textBox2.Text = average.ToString();
    rotorSpeed.Stop();
}

这很好用。谢谢!