web-dev-qa-db-fra.com

Valeur moyenne de la liste

Je veux créer un code qui, au premier clic, lance le chronomètre rotorSpeed, puis au deuxième clic, ajoute rotorSpeed.ElapsedMilliseconds à list. Au deuxième clic, le chronomètre est réinitialisé et le chronométrage est repris, puis, au troisième clic, ajoute à nouveau rotorSpeed.ElapsedMilliseconds à list. Il n'y a pas d'erreur dans le code, mais lorsque je le débogue, j'obtiens une erreur sur 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();
}

C'est l'erreur que j'obtiens:

Une exception non gérée du type 'System.InvalidOperationException' s'est produite dans> System.Core.dll

Informations complémentaires: la séquence ne contient aucun élément

5
rltcounter221

Votre list est vide et appelez donc Average() sur cette exception de projection. Changer la ligne ci-dessous

double average = list.Average();

à

double average = list.Count > 0 ? list.Average() : 0.0;
13
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();
}

Cela fonctionne très bien. Merci!

0
rltcounter221