2017-12-09 9 views
1

私は比較的新しいですが、Streamreaderを使用してファイルのx番目の値の平均を求めるプログラムを作成しようとしています。 (例えば、そのファイルの5番目ごとの値の平均値を求めたい場合)C#ストリームリーダーを使用してファイル内のすべてのx番目の値の平均を見つける

ファイルを読み込んで各カンマの新しい行に分割するコードを書きましたが、これはうまくいきますそれぞれの特定の値を読んでください。

しかし、私は、4番目ごとなどのあらゆる特定の価値を見つけて、それらの平均を見つけて同じプログラムで出力する方法を考えるのに苦労しています。

static void Main(string[] args) 
    { 
     using (var reader = new StreamReader(@"file")) 
     { 
      List<string> list = new List<string>(); 
      while (!reader.EndOfStream) 
      { 
       var line = reader.ReadLine(); 
       var values = line.Split(','); 
       list.Add(values[0]); 
      } 
     } 
    } 

任意の提案やヘルプを大幅に

+0

[どのように私はリストからn番目ごとのアイテムを入手できますか?](の可能性のある重複https://stackoverflow.com/questions/682615/how-can-i-get-every-nth-item- from-a-listt) 'List'の4番目の項目をスキップする方法を入力すると、googleにはたくさんの例があります。数学関数を実行している場合は、適切なキャストを行う必要があります – MethodMan

+0

いくつかのコードを追加しましたが、試したことはありません。あなたはまだ他の人があなたのすべての仕事をやりたがっています。 – Sefe

答えて

0

次のように試してみてくださいをいただければ幸いです。

static void Main() 
    { 
     using (var reader = new StreamReader(@"file")) 
     { 
      int lineNumber = 4; 
      bool streamEnded = false; 
      List<string> list = new List<string>(); 
      while (!streamEnded) 
      { 
       var line = ReadSpecificLine(reader, lineNumber,out streamEnded); 
       if (string.IsNullOrEmpty(line)) 
       { 
        continue; 
       } 
       var values = line.Split(','); 
       list.Add(values[0]); 
      } 
     } 
    } 
    public static string ReadSpecificLine(StreamReader sr, int lineNumber,out bool streamEnded) 
    { 
     streamEnded = false; 
     for (int i = 1; i < lineNumber; i++) 
     { 
      if (sr.EndOfStream) 
      { 
       streamEnded = true; 
       return ""; 
      } 
      sr.ReadLine(); 
     } 
     if (sr.EndOfStream) 
     { 
      streamEnded = true; 
      return ""; 
     } 
     return sr.ReadLine(); 
    } 
+0

私はこれを使って、ファイルの場所を変更して正しいものにするが、プログラムを実行すると出力は得られない。どんな考え? – Major

+0

"プログラムを実行すると出力が表示されません"リストのオブジェクトをコンソールに出力することを意味しますか? – lucky

関連する問題