2017-04-10 73 views
0

我需要關於如何使程序顯示的所有的定價相結合末從文本文件c#計算平均值

static void Main(string[] args) 
{ 
    int[] hours = new int[31]; 
    const decimal HOURLY_RATE = 2.5M; 
    const decimal MAX_FEE = 20.00M; 
    decimal pay; 
    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  pay"); 
    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(); 




} 

} }

我有點粘在平均幫助如何讓它顯示所有結果,然後在應用程序底部添加平均值

+0

在你的代碼試圖做 – CurseStacker

+0

所以請詳細說明基本上代碼顯示文本fi的小時數隨着價格,然後我想它來計算所有的價格的平均值 – SamuelW

+0

嘗試做這個'decimal result = Math.Min(File.ReadLines(「hours.txt」)。Select(x => decimal.Parse (x))。Average()* HOURLY_RATE,MAX_FEE);'。 – Enigmativity

回答

0

我更喜歡使用類似下面的類來處理文件中的所有數據:

public class wages 
{ 
    const decimal HOURLY_RATE = 2.5M; 
    const decimal MAX_FEE = 20.00M; 
    private int _WorkingHour; 

    public int WorkingHour 
    { 
     get { return _WorkingHour; } 
     set 
     { 
      _WorkingHour = value; 
      _AmountToPay = Math.Min(value * HOURLY_RATE, MAX_FEE); 
     } 
    } 
    private decimal _AmountToPay; 

    public decimal AmountToPay 
    { 
     get { return _AmountToPay; } 
    } 

    public override string ToString() 
    { 
     return String.Format("{0,4} {1,10}", WorkingHour, AmountToPay.ToString("C")); 
    } 
} 

然後創建類的List細節從文件存儲,顯示他們並計算出類似下面的總和與平均值:

var LinesInFile = System.IO.File.ReadAllLines("hours.txt"); 
List<wages> wagesList = new List<wages>(); 
foreach (string line in LinesInFile) 
{ 
    wagesList.Add(new wages() { WorkingHour = int.Parse(line) }); 
} 

// Display the details 
Console.WriteLine("hours  pay"); 
foreach (wages wage in wagesList) 
{ 
    Console.WriteLine(wage.ToString());// overrided method will give you the formated string 
} 
Console.WriteLine("Average Pay : {0}", wagesList.Average(x => x.AmountToPay)); 

如果你仍然想要去與你的代碼,然後您必須聲明一個變量,以保持薪酬的總和,然後根據該值獲得平均,我認爲你必須遵循下面的代碼:

Console.WriteLine("hours  pay"); 
decimal sumOfPay = 0; 
for (int i = 0; i < hours.Length; i++) 
{ 
    pay = Math.Min(hours[i] * HOURLY_RATE, MAX_FEE); 
    sumOfPay += pay; 
    Console.WriteLine("{0,4} {1,10}", hours[i], pay.ToString("C")); 
} 
Console.WriteLine("Average Pay : {0}", sumOfPay/hours.Length); 
+0

感謝的人,很快就會嘗試 – SamuelW

+0

沒問題,高興地幫助你,請讓我知道如果它有幫助 –

+0

所以此刻我只是想堅持使用數組,類似於我在我的原代碼上,因爲我我仍然試圖學習它們,會不會有一種方法可以找到使用我使用的原始代碼的平均值? – SamuelW