我应该如何显示我的2D数组?还是我数组的平均和?它不让我。
该代码应该显示一个2D数组,将所有这些数字相加,计算平均值并显示平均值。
// It gives me a richTextBox error. I tried to change 'float' to 'void' - gives
// me a return error.
//
// It says the object require non static field?
richTextBox1.AppendText(array[ i, j] + " ");
richTextBox1.AppendText(" "+ sum.ToString());
return avg; // <<< Error here
static float Avg(int[,] array)
{
return (float)array.OfType<int>().Average();
richTextBox1.Clear(); // <<<<==================== Here
Random rand = new Random();
float sum = 0;
int rows = array.GetLength(0);
int cols = array.GetLength(1);
for (int i = 0; i < array.Length; i++)
{
for (int j = 0; j < cols; j++)
{
int value = rand.Next(-100, 100);
array[i, j] = value;
richTextBox1.AppendText(value + " "); // <<<<<<<===== Here
if (value <= 0)
sum += value;
float avg = sum / value;
}
return avg;//<<<========here
}
richTextBox1.AppendText(" Total Average is: " + avg.ToString()); // <<<==== Here
}
private void button6_Click(object sender, EventArgs e)
{
Avg(A);
}
试试这个:
static float Avg(int[,] array)
{
return (float)array.OfType<int>().Average();
}
然后你这样使用它:
var array = new int [2,3] {{1,2, 3}, {4,5, 6}};
Console.WriteLine(Avg(array));
更新-用于锯齿状阵列
static float Avg(int[][] array)
{
return (float)array.SelectMany(a => a).Average();
}
void Main()
{
int[][] array =
{
new int[] {1,2,3},
new int[] {4,5}
};
Console.WriteLine(Avg(array));
}
更新2如果你想按自己的方式做,试试这个:
private void Avg(int [,] array)
{
richTextBox1.Clear();
float sum = 0;
int rows = array.GetLength(0);
int cols = array.GetLength(1);
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
richTextBox1.AppendText(array[i,j] + " ");
sum += array[i,j];
}
}
richTextBox1.AppendText(" Total Average is: " + (float)sum/(rows*cols));
}
因为我们真的不知道,你试图用Avg方法做什么。我只是想总结一下:
-
static float Avg
:不能在使用Form实例成员(如richTextBox1)的情况下使用static
。请仅在OnClick方法中删除"static"或移动richTextBox1的用法。 -
不要在需要的地方使用
return
。之后的所有内容都不会进行处理(如果不使用try/finally)。如果要使用返回的值,请在处理完方法中的所有内容后的最后一行调用它。 -
return avg
:avg
在当前上下文中是未知的,是否在上一次关闭中定义(你知道你的邻居在关闭的门后面有什么吗?)
关于最终解决方案,请参阅Ned的回答。