我正在研究一个简单的程序来生成一个值数组并对它们执行一些基本的计算。从Main方法调用我的“Mean”和“Median”方法时遇到问题。我在下面附加了编译器错误。谢谢。在同一个类中调用方法
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' 不包含一个定义 '平均' 和没有扩展方法 '平均数' 接受第一
型“的System.Array”的说法可以找到(是否缺少using指令 或程序集引用?)
你所说的'平均()'方法意思?正如错误所说的那样,没有一种叫做“Array”的方法。你有没有尝试为'Array'写一个扩展方法?然后阅读:https://msdn.microsoft.com/en-us//library/bb383977.aspx –
Linq已经有['Average'](https://msdn.microsoft.com/en-us/library/ vstudio/system.linq.enumerable.average(v = vs.100).aspx)方法与平均值相同。另外,既然你已经计算出了写入控制台的最小值和最大值,为什么不把它们存储在变量中,而只是从它们中计算中位数,而不是再次运行'Max'和'Min'? – juharr