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

我需要定义两个方法来返回一个int数组的sumaverage ,方法定义如下: –

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

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

这就是你应该这样做的方式,我之所以这样说,是因为你是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而言,无论如何都没有必要拥有自己的function。 我已经假设你被要求实现这样的function作为一个任务来certificate你对C#的理解,但我可能是错的。

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

使用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; 

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

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

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

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

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

如果你正在使用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); } 

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

 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; }