web-dev-qa-db-de.com

Durchschnittswert der Liste

Ich möchte Code erstellen, der beim ersten Klick Start rotorSpeed Stoppuhr und dann beim zweiten Klick rotorSpeed.ElapsedMilliseconds zu list hinzugefügt wird. Beim zweiten Klick wird die Stoppuhr zurückgesetzt und das Timing erneut gestartet. Beim dritten Klick wird erneut rotorSpeed.ElapsedMilliseconds zu list..__ hinzugefügt. Der Code enthält keine Fehler, aber beim Debuggen erhalte ich einen Fehler bei 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();
}

Dies ist der Fehler, den ich bekomme:

Eine nicht behandelte Ausnahme des Typs 'System.InvalidOperationException' ist in> System.Core.dll aufgetreten

Zusätzliche Informationen: Sequenz enthält keine Elemente

5
rltcounter221

Ihre list ist leer und ruft daher Average() für eine Ausnahme auf. Ändern Sie die untere Zeile

double average = list.Average();

zu

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();
}

Das funktioniert gut. Vielen Dank!

0
rltcounter221