2012-10-29 2 views
0

파일의 숫자를 합산하려고합니다. 나는 아주 새롭고 이것을하는 방법을 이해하지 못합니다. 이것은 내가 지금까지 가지고있는 것이다. 이것은 내가 더 설명하기를 원하지만 나는 무엇을 내려야할지 모르겠습니다. 내가 아는 전부는 내가 배열에 파일을 가지고있다. 파일의 숫자는 텍스트 상자에 추가해야합니다. 해결 ... 나는 for 루프를 추가하고 그 문제를 해결했습니다.배열에 파일을 만든 다음 파일의 번호를 말합니다.

다음은 코드입니다. 당신의 while 문에서

private void totalButton_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      const int SIZE = 7; 
      double[] numbers = new double [SIZE]; 
      double total = 0; 
      int index = 0; 

      StreamReader inputFile; 

      inputFile = File.OpenText("Sales.txt"); 


       while (index < numbers.Length && !inputFile.EndOfStream) 
       { 
        numbers[index] = double.Parse(inputFile.ReadLine()); 
        index++; 
       } 
       for (index = 0; index < numbers.Length; index++) 
       { 
        total += numbers[index]; 
        totalTextBox.Text = total.ToString(); 
       } 
      inputFile.Close(); 

      foreach (double value in numbers) 
      { 
       listBox1.Items.Add(value); 

      } 

    } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
} 

    private void exitButton_Click(object sender, EventArgs e) 
    { 
     this.Close(); 
    } 

} 

}

+1

배열의 모든 숫자의 합계를 원한다는 의미입니까? – iMortalitySX

+0

배열에 숫자가 이미 입력되어 있습니까? while 문에서 그냥 집계하십시오. 프랑소와가 말한 것. –

+0

프랑소와 (Francois)가 말한 바를 수행했지만 런타임 오류가 발생합니다. 그것은 인덱스가 배열의 범위 밖에 있다고합니다. 내 새 코드가 위입니다. –

답변

1

, 그냥 myLabel.Text = total.ToString(); 마지막에 다음 total += numbers[index];을 추가?

그리고 index은 값의 수를 알려줍니다.

+0

그것은 인덱스가 배열의 범위 밖에 있다고 말합니다. –

+0

for 루프를 추가해야합니다. for (index = 0; index

2

(그래서 당신이 while(){} 루프를 사용하지 않고 File.ReadAllLines(String)) System.Linq를 사용하더라도 간단한 방법 :

// read the file in (broken apart by lines) in to an array: 
String[] lines = File.ReadAllLines("Sales.txt"); 

// Try parsing them to Double values: 
Double[] numbers = lines.Select(line => { 
    Double val = 0; 
    Double.TryParse(line, out val); 
    return val; 
}); 

// Sum then using .Sum 
Double total = lines.Sum(); 

참고 :

관련 문제