Я вижу пару вещей, которые вы можете изменить в своем коде.
Когда вы добавляете элемент в ListBox
:
В качестве условия следует использовать свойство Length
массива, который вы заполняете. Это уменьшает количество мест, в которых вы должны обновить свой код, если позже вы решите изменить максимальное количество значений.
В настоящее время вы используете цикл для добавления того же номера в массив к первым четырем индексам. Вместо этого вы можете просто использовать Limite
в качестве индекса для добавления элемента.
Таким образом, метод будет выглядеть так:
private void TextBoxIntroduzirValores_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (Limite >= Valores.Length)
{
MessageBox.Show($"You can only enter {Valores.Length} numbers!");
TextBoxIntroduzirValores.Text = "";
}
else
{
// Add item to array
Valores[Limite] = Convert.ToSingle(TextBoxIntroduzirValores.Text);
// Increment index
Limite = Limite + 1;
// Add item to listbox
ListaValores.Items.Add(TextBoxIntroduzirValores.Text);
// Clear textbox
TextBoxIntroduzirValores.Text = "";
}
}
}
Кроме того, когда вы вычисляете результаты, вы можете использовать методы расширения System.Linq
для массива, в котором хранятся значения:
private void Calcular_Click(object sender, EventArgs e)
{
// You can calculate values using Sytem.Linq extension methods
txtMin.Text = Valores.Min().ToString();
txtMax.Text = Valores.Max().ToString();
txtAvg.Text = Valores.Average().ToString();
txtTotal.Text = Valores.Sum().ToString();
}
Или, вы можете рассчитать эти значения долгий путь. Для этого создайте переменные с некоторыми значениями по умолчанию. Для значения по умолчанию Min
мы используем максимально возможное число. Затем, когда мы перебираем каждый элемент в массиве, мы видим, что элемент меньше Min
, и если это так, обновим Min
этим новым значением. Точно так же мы используем наименьшее возможное число в качестве значения по умолчанию для Max
. Это гарантирует, что эти элементы являются точными в конце цикла.
Для Total
мы начинаем значение с 0
, а затем каждый элемент в массиве Total
, когда мы его циклически перебираем. А для Average
мы просто делим Total
на количество элементов в массиве (которое является свойством Length
):
private void Calcular_Click(object sender, EventArgs e)
{
// Or you can do it the long way. First start with default values:
float min = Single.MaxValue;
float max = Single.MinValue;
float total = 0;
// Then go through each item in the array
// and update the values above if necessary
foreach (float item in Valores)
{
if (item < min) min = item;
if (item > max) max = item;
total = total + item;
}
// Calculate average last since we need the total first
float avg = total / Valores.Length;
// Update the textboxes with these values:
txtMin.Text = min.ToString();
txtMax.Text = max.ToString();
txtAvg.Text = avg.ToString();
txtTotal.Text = total.ToString();
}