2017-04-11 35 views
-1
static void Main(string[] args) 
    { 
     int[] hours = new int[30]; 
     const decimal HOURLY_RATE = 2.5M; 
     const decimal MAX_FEE = 20.00M; 
     decimal pay; 
     double average; 
     int counter = 0; 
     string line; 
     StreamReader fileSR = new StreamReader("hours.txt"); 
     line = fileSR.ReadLine(); 
     while (line != null) 
     { 
      hours[counter] = int.Parse(line); 
      counter = counter + 1; 
      line = fileSR.ReadLine(); 
     } 
     fileSR.Close(); 
     Console.WriteLine("Hours  Parking Fee"); 
     for (int i = 0; i < hours.Length; i++) 
     { 
      pay = Math.Min(hours[i] * HOURLY_RATE, MAX_FEE); 
      Console.WriteLine("{0,4} {1,10}", hours[i], pay.ToString("C")); 
     } 
     Console.ReadKey(); 
    } 
} 

如上所述,我不知道如何使用StreamReader計算txt文件的平均值。如果我能得到一些幫助,那將是非常棒的。隨意編輯代碼,儘可能多地使其工作。C#需要使用StreamReader從txt文件中求出平均值的幫助

此時代碼輸出到控制檯應用程序中,顯示小時數和停車費。但在此之下,我希望它說停車費的平均值。

+0

對不起。我們不在這裏爲你寫代碼。您需要告訴我們您的具體問題是什麼,以及它如何不按預期工作。告訴我們「隨意編輯代碼儘可能多地做到這一點」不會在這裏削減它。 – krillgar

+0

@krillgar不要求你爲我寫代碼。我想解釋一下當我使用StreamReader時,如何從文本文件中計算出平均值。 –

+1

如果您不必使用流式閱讀器,這是更簡單一點:'var average = File.ReadAllLines(「hours.txt」)。Select(int.Parse).Average();' –

回答

1

在這種情況下使用StreamReader是無關緊要的。你現在正在做的是用文件中的值填充一個數組。這些值存儲在hours陣列中。

從這裏,最簡單的辦法是從數組取平均值:

double sum = 0; 
for (int i = 0; i < hours.Length; i++) 
{ 
    sum += hours[i]; 
} 
double average = sum/hours.Length; 

或相似,例如與LINQ直接一些:

using System.Linq; 

// ... 

double average = hours.Average(); 
+0

謝謝!所以,如果我想計算停車費的平均值,我需要做些什麼。 (停車費是小時* HOURLY_RATE) –

+0

由於平均值是線性的,因此您無需計算費用的平均值,您可以直接從averate(average_fee = average_hours * HOURLY_RATE)計算。如果此答案解決了您的問題,請不要忘記您可以將其標記爲已接受! – heltonbiker