C# 如何返回int数组的总和和平均值?
我需要定义两种方法来返回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(
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 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
sa
和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;
}