C# 如何返回int数组的总和和平均值?

C# 如何返回int数组的总和和平均值?,c#,C#,我需要定义两种方法来返回int数组的sum和average。定义方法如下:- public int Sum(params int[] customerssalary) { // I tried the following but it fails return customerssalary.sum(); } 另一个问题是,如何返回这些int值的平均值?您尝试了错误的变量,ints不是正确的参数名称 customerssalary.Average(

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

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

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

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

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

public double Avg(params int[] customerssalary)
{
    return customerssalary.Average();
}
但是你认为这些方法真的需要吗?

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

  • 该变量称为
    customerssalary
    ,而不是
    ints
  • C#区分大小写-该方法称为
    Sum()
    ,而不是
    Sum()
此外,您还需要的using指令

using System.Linq;
求和后,只需除以数组的长度即可得到平均值-无需使用将再次迭代数组的
average()

int sum = customerssalary.Sum();
int average = sum / customerssalary.Length;
或者作为一个
双精度

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

这是你应该做的,我这么说是因为你对C#显然是新手,也许应该试着理解一些基本的东西是如何工作的

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

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

   return result;
}
在第二个函数中使用
decimal
类型的原因是,除法很容易返回非整数结果



其他人已经提供了一个Linq替代方案,这是我无论如何都会使用的,但是对于Linq来说,拥有自己的函数没有任何意义。我假设您被要求将这些功能作为一项任务来实现,以证明您对C#的理解,但我可能错了。

如果您使用的是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);
}
public void sumAverageElements(int[]arr)
{
int size=arr.Length;
整数和=0;
整数平均=0;
对于(int i=0;i
尽管以上所有答案都是不同风格的正确答案,但我想提供以下解决方案,其中包括空检查:

decimal sum = (customerssalary == null) ? 0 : customerssalary.Sum();
decimal avg = (customerssalary == null) ? 0 : customerssalary.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;
                }

您确定
返回int.sum()不起作用?这到底为什么行不通?!?!?对不起,我指的是CustomerSalary.sum();我想你正在使用.NET2.0.你有没有听说过。。所以请先检查一下,如果他想通过家庭作业,我想他们是需要的;-)是 啊这对从两个函数返回值没有帮助,是吗。另外,当平均值是非整数值时又如何呢?此方法可以拆分为两个。我只是提供了逻辑。
decimal result=sum/customerssalary.Length
将除法计算为整数,然后将其存储在十进制中。在执行除法之前,您需要将两个参数中的一个转换为十进制/浮点/任何形式。@Rawling:Eh?。。。不知道你的意思:如果你有
int
s
a
b
a/b
执行整数除法(例如
7/2
给出
3
)。无论您将其存储在
int
decimal
中,它仍然执行整数除法。@Rawling。。。是的,我的评论只是一个笑话,也许你可以看到,在你的建议下,我已经改变了它。今天早上,很明显,我离线了:-/对不起!(抱歉,如果问这个问题的位置不对)当使用平均法时,它返回一个小数点,但这里和上面的建议似乎是双精度的。我可以问一下原因吗?啊,算出了,这取决于输入,我将在这里留下这条评论,让其他任何人思考同样的问题。+1用于提及使用System.Linq的
因为如果缺少它,Visual Studio不会自动添加。这是最好、最简单的方法。需要Linq
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;
                }