【问题标题】:How to find the lowest, highest and average values in a listbox [closed]如何在列表框中找到最低、最高和平均值 [关闭]
【发布时间】:2017-10-19 17:50:43
【问题描述】:

我正在尝试创建一个程序来计算和显示列表框中项目的最高、最低和平均值(从 txt 文件生成的项目)。我终于想出了如何将文本文件加载到列表框。我一直在寻找线索大约一个小时,我所有的尝试都把我带到了死胡同。

我的列表框称为 readListbox,我的最高、最低和平均标签分别称为最高标签、最低标签和平均标签。我该如何着手创建这个程序。数字采用十进制格式。任何帮助将不胜感激。

private void readButton_Click(object sender, EventArgs e)
{
    try
    {
        OpenFileDialog Open = new OpenFileDialog();
        if(Open.ShowDialog() == DialogResult.OK)
        {
            readListbox.Text = Open.FileName;
            string[] lines = System.IO.File.ReadAllLines(Open.FileName);
            readListbox.Items.AddRange(lines);
        }
    }
    catch
    {
        MessageBox.Show("Error");
    }

    }
}
}

【问题讨论】:

  • 您的文件中存储了哪些类型的值?我想你那里只有数字吗?它们是整数还是小数?
  • 它们是小数,谢谢!
  • 为什么你的代码中有额外的}{..?我还建议将值存储在从文件中读取的数组中,并使用 Array.Min、Array.Max 函数以及使用 lambda 表达式进行平均查看.. 有很多工作示例以及许多不同的示例给这只猫剥皮的方法..
  • 我根本不擅长数组,更不用说c#了。我只知道列表框的基础知识,这就是我决定使用更熟悉的方法的原因。当我有更多时间时会检查它:)

标签: c# listbox average highest


【解决方案1】:

读取文件的字符串元素后,您需要将它们转换为十进制值。此时,您可以使用 IEnumerable 扩展的内置方法来获取数据

OpenFileDialog Open = new OpenFileDialog();
if(Open.ShowDialog() == DialogResult.OK)
{
        readListbox.Text = Open.FileName;
        string[] lines = System.IO.File.ReadAllLines(Open.FileName);

        decimal[] values = lines.Select(x => decimal.Parse(x)).ToArray();
        labelHigh.Text = values.Max().ToString();
        labelMin.Text = values.Min().ToString();
        labelAvg.Text = values.Average().ToString();        

        readListbox.Items.AddRange(lines);
 }

【讨论】:

  • 您好我不完全理解您的解释,这是由于我缺乏编程知识/术语。我已将上面的代码复制到我的程序中,但出现 2 个错误: 1. 无法在此范围内声明名为“lines”的本地或参数,因为该名称在封闭的本地范围中用于定义本地或参数 2。当前上下文中不存在名称“打开”
  • 上面的代码替换了现有 if 块中的代码。答案编辑得更清楚
猜你喜欢
  • 1970-01-01
  • 2016-06-04
  • 1970-01-01
  • 1970-01-01
  • 2016-08-26
  • 2020-10-23
  • 2017-07-20
  • 1970-01-01
  • 2021-02-17
相关资源
最近更新 更多