10

我需要定义两种方法来返回int 数组的sumand 。average方法定义如下:-

public int Sum(params int[] customerssalary)
{
           
         // I tried the following but it fails   return customerssalary.sum();
}

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

4

7 回答 7

45
customerssalary.Average();
customerssalary.Sum();
于 2012-10-18T08:07:54.793 回答
16

这是你应该这样做的方式,我这么说是因为你显然是 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# 的理解,但我可能错了。

于 2012-10-18T08:17:51.707 回答
14

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

  • 变量被称为customerssalary,而不是ints
  • C# 区分大小写 - 方法被调用Sum(),而不是sum().

此外,您需要一个 using 指令

using System.Linq;

一旦你得到了总和,你可以只除以数组的长度来得到平均值——你不需要使用Average()which 将再次遍历数组。

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

或作为double

double average = ((double) sum) / customerssalary.Length;
于 2012-10-18T08:11:33.187 回答
3

尽管上面所有的答案都是不同的正确答案,但我想提供以下解决方案,其中包括一个空检查:

decimal sum = (customerssalary == null) ? 0 : customerssalary.Sum();
decimal avg = (customerssalary == null) ? 0 : customerssalary.Average();
于 2016-02-24T14:23:19.707 回答
2

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

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

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

但是你觉得这些方法真的有必要吗?

于 2012-10-18T08:09:34.277 回答
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);
}
于 2012-10-18T08:20:02.667 回答
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;
                }
于 2017-06-18T11:18:48.567 回答