如何查找列表框中的最低,最高和平均值
我试图创建一个程序来计算并显示列表框中的项目(从txt文件生成的项目)的最高,最低和平均值。我终于想出了如何将文本文件加载到列表框中。我一直在寻找线索一个小时左右,所有的尝试都让我陷入了死胡同。如何查找列表框中的最低,最高和平均值
我的列表框被称为readListbox,我的最高,最低和平均标签分别被称为highestLabel,lowestLabel和averageLabel。我如何着手制定这个计划。数字是十进制格式。任何帮助将非常感激。
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");
}
}
}
}
读取文件的字符串元素后,需要将它们转换为十进制值。此时,您可以使用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);
}
嗨我不完全理解你的解释,这是由于我缺乏编程知识/术语。我已将上面的代码复制到我的程序中,并且出现两个错误: 1.本地或名为'lines'的参数不能在此作用域中声明,因为该名称在封闭的本地作用域中用于定义本地或参数 2.当前上下文中不存在“打开”名称 – Relaxsingh
上面的代码替换了现有if块中的代码。回答编辑更清楚 – Steve
什么样的值存储在您的文件中?我想你在那里只有数字吗?他们是整数还是小数? – Steve
他们是小数,谢谢! – Relaxsingh
为什么你在代码中有额外的'}'和'{'..?另外我建议将值存储在从文件中读取的数组中,并使用Array.Min,Array.Max函数和Average查看使用lambda表达式..有很多工作示例以及许多不同的示例这种方法来剥皮这个猫.. – MethodMan