Это калькулятор скорости бега / времени, над которым я работаю.Эта конкретная проблема, с которой я столкнулся, заключается в поиске среднего темпа для введенных значений времени в милях.У меня есть пользователь, чтобы ввести несколько значений в формате чч: мм: сс через текстовые поля.Мне нужно сложить значения вместе, найти среднее значение введенных значений и вернуть это среднее значение метке в формате чч: мм: сс.Я пробовал разные способы сделать это и читать несколько других постов, но продолжаю зацикливаться.
Я пробовал использовать Список, но количество вводимых значений всегда варьируется, мне нужно этобыть динамичнымЕсли есть способ ввести только определенные пользователем значения в список, мой список будет работать.На данный момент он получает среднее значение всех моих ящиков, даже если один из них не имеет значения.
Также попытался просто сложить значения TimeSpan вместе и разделить их на количество,Это дает правильный подсчет того, сколько значений было введено пользователем.Однако я получаю сообщение об ошибке, в котором говорится, что нельзя применить оператор / к операндам типа TimeSpan и типа int.
Это не тот же сценарий, что и Найти среднее для коллекции TimeSpans.Код, использованный в этой статье, сломал все мое приложение.
private void calculate_btn_Click(object sender, EventArgs e)
{
TimeSpan d1 = TimeSpan.Parse(textBox1.Text);
TimeSpan d2 = TimeSpan.Parse(textBox2.Text);
TimeSpan d3 = TimeSpan.Parse(textBox3.Text);
var sourceList = new List<TimeSpan>();
sourceList.Add(d1);
sourceList.Add(d2);
sourceList.Add(d3);
var averageTimeSpan = new TimeSpan(Convert.ToInt64(sourceList.Average(timeSpan => timeSpan.Ticks)));
averagelabletext.Text = averageTimeSpan.ToString();
}
private void calculate_btn_Click(object sender, EventArgs e)
{
TimeSpan d1 = TimeSpan.Parse(textBox1.Text);
TimeSpan d2 = TimeSpan.Parse(textBox2.Text);
TimeSpan d3 = TimeSpan.Parse(textBox3.Text);
TimeSpan total = (d1 + d2 + d3);
int count = 0;
foreach (Control c in Controls)
{
if (!(c is TextBox)) continue;
TextBox t = c as TextBox;
{
if (t.Text != "00:00:00")
{
count++;
}
}
}
averagelabletext.Text = total / count;
}
Я ожидаю, что если пользователь введет 00:09:00 в textbox1 и 00:09:30 в textbox 2, результат должен быть 00: 09: 15.
Прямо сейчас, если пользователь вводит те же самые значения, возвращаемое среднее значение составляет 00:06:10, поскольку оно все еще вычисляет это третье значение в среднее значение.Поскольку пользователь не ввел значение в это поле, оно по-прежнему 00: 00: 00.