2017-12-09 1 views
1

저는 C#에 비교적 익숙하며 Streamreader를 사용하여 파일의 모든 x 번째 값의 평균을 찾는 프로그램을 작성하려고합니다. (예를 들어 해당 파일에서 매 5 번째 값의 평균을 찾고 싶다면)C# streamreader를 사용하여 파일의 모든 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 에있는 네 번째 항목을 건너 뛰는 방법을 입력하는 경우 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