2017-04-10 75 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