2017-10-19 17 views
-2

リストボックス内の項目の最高値、最低値、平均値を計算して表示するプログラムを作成しようとしています(txtファイルから生成された項目)。私は最終的にどのようにリストボックスにテキストファイルを読み込むかを考え出しました。私は約1時間の手がかりを探しており、すべての試みが私を窮地に追いやってきました。リストボックス内の最低値、最高値、平均値を見つける方法

私のリストボックスは、readListboxと呼ばれ、私の最高、最低、平均ラベルはそれぞれhighestLabel、lowestLabel、averageLabelと呼ばれます。どのように私はこのプログラムをつくるつもりですか?数字は10進形式です。どんなヘルプも非常に高く評価されます。

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関数を使用し、ラムダ式を使って平均的な見た目を得ることをお勧めします。多くの実例がありますこの猫をスキンにする方法。 – MethodMan

答えて

0

ファイルの文字列要素を読み取った後、10進値に変換する必要があります。その時点で、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

こんにちは私は完全にあなたの説明を理解していない、これはプログラミング知識/用語の私の不足のためです。上記のコードを私のプログラムにコピーしましたが、2つのエラーが発生しました。 1.ローカルまたはパラメータを定義するためにローカルスコープ内で使用されているため、 'lines'というローカルまたはパラメータはこのスコープで宣言できません 2.名前 'Open'は現在のコンテキストに存在しません – Relaxsingh

+0

上記のコードは、既存のifブロック内のコードを置き換えます。より明確になるように編集された回答 – Steve

関連する問題