2017-10-19 13 views
-2

목록 상자 (txt 파일에서 생성 된 항목)의 항목 중 최고, 최저 및 평균값을 계산하고 표시하는 프로그램을 만들려고합니다. 마침내 목록 파일에 텍스트 파일을로드하는 방법을 알아 냈습니다. 나는 약 한 시간 동안 단서를 찾고 있었고 나의 모든 시도는 나를 막 다른 길로 인도했다.목록 상자에서 최저, 최고 및 평균 값을 찾는 방법

내 listbox는 readListbox이고 my Highest, Lowest 및 Average 레이블은 각각 ​​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