2017-10-19 317 views
-2

我試圖創建一個程序來計算並顯示列表框中的項目(從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"); 
    } 

    } 
} 
} 
+0

什麼樣的值存儲在您的文件中?我想你在那裏只有數字嗎?他們是整數還是小數? – Steve

+0

他們是小數,謝謝! – Relaxsingh

+0

爲什麼你在代碼中有額外的'}'和'{'..?另外我建議將值存儲在從文件中讀取的數組中,並使用Array.Min,Array.Max函數和Average查看使用lambda表達式..有很多工作示例以及許多不同的示例這種方法來剝皮這個貓.. – MethodMan

回答

0

讀取文件的字符串元素後,需要將它們轉換爲十進制值。此時,您可以使用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); 
} 
+0

嗨我不完全理解你的解釋,這是由於我缺乏編程知識/術語。我已將上面的代碼複製到我的程序中,並且出現兩個錯誤: 1.本地或名爲'lines'的參數不能在此作用域中聲明,因爲該名稱在封閉的本地作用域中用於定義本地或參數 2.當前上下文中不存在「打開」名稱 – Relaxsingh

+0

上面的代碼替換了現有if塊中的代碼。回答編輯更清楚 – Steve

相關問題