-1

我有以下代码,如何从列表框中的项目中获取值并让我的程序找到值的平均值、最高和最低值。我目前有以下文本框(averageTextbox、highestTextbox、lowestTextbox),我希望将值相应地显示到文本框中。提前致谢!

private void readButton_Click(object sender, EventArgs e)
{
    int counter = 0;
    string line;
    System.IO.StreamReader file = new System.IO.StreamReader(
        @"C:\Users\Harra\Documents\Visual Studio 2017\Projects\File Reader\Sales.txt");
    double dblAdd = 0;

    while ((line = file.ReadLine()) != null)
    {
        displayListBox.Items.Add(line);
        dblAdd += Convert.ToDouble(line);
        counter++;
    }

    totalTextBox.Text = string.Format("{0:F}", dblAdd);
}
4

2 回答 2

1

Ed 的答案很可能是要走的路,但这是您可以做到的另一种方法(从任何可以访问您的displayListBox.

请注意,这仅在ListBox填充后才有效doubles。它还需要一个对 的引用System.Linq,它提供了我们使用的扩展方法 ( Cast, Sum, Max, Min, 和Average):

using System.Linq;

以下行将获取所有ListBoxItems,将它们转换为strings,然后将它们转换为doubles

IEnumerable<double> listBoxDoubleItems = 
    displayListBox.Items.Cast<string>().Select(Convert.ToDouble);

现在IEnumerable<double>您可以使用,您可以使用 Linq 扩展方法来获取您要查找的内容:

double total = listBoxDoubleItems.Sum();
double highest = listBoxDoubleItems.Max();
double lowest = listBoxDoubleItems.Min();
double average = listBoxDoubleItems.Average();
于 2017-05-18T19:01:26.870 回答
0
double lowest = Double.MaxValue;
double highest = Double.MinValue;
double average = 0;

while ((line = file.ReadLine()) != null)
{
    displayListBox.Items.Add(line);

    var dbl = Convert.ToDouble(line);

    if (dbl > highest)
        highest = dbl;

    if (dbl < lowest)
        lowest = dbl;

    dblAdd += dbl;

    counter++;
}

if (counter > 0)
{
    average = dblAdd / (double)counter;
}
else
{
    highest = lowest = 0;
}

您已经知道如何创建 TextBox,以及如何格式化 adouble并将其显示在 TextBox 中。

于 2017-05-18T18:49:30.327 回答