所以我试图创建一个调用方法的数组,将100个数字从-100到100随机化 并显示平均负数。我一直盯着它,我无法找到错误或解决方案也许我累了,但如果有人能帮助我,我会非常感激。
private void button1_Click(object sender, EventArgs e)
{
int[] P = new int[100];
Random rand = new Random();
float enAvg = AvgNeg(P);
textBox1.Text = (enAvg).ToString("");
}
static float AvgNeg(int[] array)
{
float sum = 0;
int counter = 0;
for (int i = 0; i < array.Length; i++)
{
if (array[i] < 0)
{
sum += array[i];
counter++;
}
}
float avg = sum / counter;
return avg;
}
答案 0 :(得分:1)
您可以分三行进行:
Random r = new Random();
int[] num = Enumerable.Range(0, 100).Select(x => r.Next(-100, 101)).ToArray();
double avg = num.Where(n => n < 0).Average();
答案 1 :(得分:0)
问题是因为您的所有值都为零(0),因此,您的counter
变量为零(0)。
你不能除以零。所以avg
的浮点值是NaN。
以值1开始counter
。
int counter = 1;
或在除法之前验证计数器是否为零:
if(counter == 0)
return 0;
else
{
float avg = sum / counter;
return avg;
}