最初のクリックで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」タイプの未処理の例外が発生しました
追加情報:シーケンスには要素が含まれていません
list
は空なので、例外をスローしてAverage()
を呼び出します。以下の行を変更します
double average = list.Average();
に
double average = list.Count > 0 ? list.Average() : 0.0;
if (list.Count > 0)
{
textBox2.Text = list.Average().ToString();
}
if (list.Count > 1)
{
double average = list.Average();
textBox2.Text = average.ToString();
rotorSpeed.Stop();
}
これはうまく機能します。ありがとう!