【发布时间】:2015-05-29 11:49:35
【问题描述】:
我正在开发一个简单的程序来生成一个值数组并对它们执行一些基本计算。我在从 Main 方法调用我的“平均”和“中位数”方法时遇到问题。我在下面附上了编译器错误。谢谢。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication4
{
class arraymod
{
static void Main(string[] args)
{
int[] values;
values = new int[10];
Random rand = new Random();
for (int i = 0; i < 10; i++)
{
values[i] = rand.Next(1,20);
}
Array.Sort(values);
for (int i = 0; i < 10; i++)
{
Console.WriteLine(values[i]);
}
Console.WriteLine("Min: {0}", values.Min());
Console.WriteLine("Max: {0}", values.Max());
Console.WriteLine("Sum: {0}", values.Sum());
Console.WriteLine("Mean: {0}", values.Mean()); //program fails here
Console.WriteLine("Median: {0}", values.Median());
}
public int Mean(int[] arr)
{
int valuesMean = arr.Sum()/arr.Count();
return valuesMean;
}
public int Median(int[] arr)
{
int valuesMedian = (arr.Max()+ arr.Min())/2;
return valuesMedian;
}
}
}
arraymod.cs(29,42):
错误 CS1061:“System.Array”不包含 'Mean' 并且没有扩展方法 'Mean' 接受
的第一个参数 可以找到类型“System.Array”(您是否缺少 using 指令 还是程序集参考?)
【问题讨论】:
-
Mean()方法是什么意思?正如错误所说,没有Array的方法被调用。您是否尝试为Array编写扩展方法?然后阅读:msdn.microsoft.com/en-us//library/bb383977.aspx -
Linq 已经有了与mean相同的
Average方法。此外,既然您已经计算了要写入控制台的最小值和最大值,为什么不将它们存储在变量中,只计算它们的中位数,而不是再次运行Max和Min?