我怎样才能返回一个int数组的平均值

时间:2012-10-18 08:06:19

标签: c#

我需要定义两个返回int数组的sumaverage的方法 方法定义如下: -

public int Sum(params int[] customerssalary)
{

         // I tried the following but it fails   return customerssalary.sum();
}

另一个问题是如何返回这些int值的平均值?。

7 个答案:

答案 0 :(得分:32)

customerssalary.Average();
customerssalary.Sum();

答案 1 :(得分:12)

使用ints.sum()有两个问题:

  • 该变量名为customerssalary,而非ints
  • C#区分大小写 - 该方法称为Sum(),而不是sum()

此外,您还需要

的using指令
using System.Linq;

一旦得到总和,你可以除以数组的长度来得到平均值 - 你不需要使用Average(),它将再次迭代数组。

int sum = customerssalary.Sum();
int average = sum / customerssalary.Length;

double

double average = ((double) sum) / customerssalary.Length;

答案 2 :(得分:11)

这是你应该这样做的方式,我之所以这样说,是因为你是C#的新手,应该尝试理解一些基本的东西是如何运作的!

public int Sum(params int[] customerssalary)
{
   int result = 0;

   for(int i = 0; i < customerssalary.Length; i++)
   {
      result += customerssalary[i];
   }

   return result;
}

使用此Sum函数,您可以使用它来计算平均值...

public decimal Average(params int[] customerssalary)
{
   int sum = Sum(customerssalary);
   decimal result = (decimal)sum / customerssalary.Length;
   return result;
}

在第二个函数中使用decimal类型的原因是因为除法可以很容易地返回非整数结果


其他人已经提供了Linq替代方案,无论如何我都会使用它,但是对于Linq而言,无论如何都没有必要拥有自己的功能。我假设你被要求实现这样的功能,以证明你对C#的理解,但我可能是错的。

答案 3 :(得分:2)

虽然上面的答案都是正确的不同风格,但我想提供以下解决方案,其中包括空检查:

decimal sum = (customerssalary == null) ? 0 : customerssalary.Sum();
decimal avg = (customerssalary == null) ? 0 : customerssalary.Average();

答案 4 :(得分:1)

您尝试过错误的变量,ints不是参数的正确名称。

public int Sum(params int[] customerssalary)
{
    return customerssalary.Sum();
}

public double Avg(params int[] customerssalary)
{
    return customerssalary.Average();
}

但你认为真的需要这些方法吗?

答案 5 :(得分:0)

如果您使用的是visual studio 2005,那么

public void sumAverageElements(int[] arr)
{
     int size =arr.Length;
     int sum = 0;
     int average = 0;

     for (int i = 0; i < size; i++)
     {
          sum += arr[i];
     }

     average = sum / size; // sum divided by total elements in array

     Console.WriteLine("The Sum Of Array Elements Is : " + sum);
     Console.WriteLine("The Average Of Array Elements Is : " + average);
}

答案 6 :(得分:0)

我引用了很多结果并修改了我的代码工作

foreach (var rate in rateing)
                {
                    sum += Convert.ToInt32(rate.Rate);
                }
                if(rateing.Count()!= 0)
                {
                    float avg = (float)sum / (float)rateing.Count();
                    saloonusers.Rate = avg;
                }
                else
                {
                    saloonusers.Rate = (float)0.0;
                }