2014-04-08 38 views
0

所以我试图做一个数组,调用一个方法来随机化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; 
    } 
+1

是什么错误你得到了吗? –

+0

我没有收到任何错误,但是当我按下窗口窗体上的按钮时,它只显示NAN或任何它应该表示的意思。 – TheBoringGuy

+1

你似乎没有真正产生任何随机数字。你创建一个数组,你创建一个'Random',但是你从不在数组中放入任何数字! –

回答

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(); 
0

的问题是,因为所有的值是零(0),那么,你的counter变量是零(0)。 你不能被零除。所以avg的浮点值是NaN。

开始counter值为1

int counter = 1; 

或验证,如果计数器分前零:

if(counter == 0) 
    return 0; 
else 
{ 
    float avg = sum/counter; 
    return avg; 
} 
+1

启动计数器意味着结果总是*是错误的。 – Servy

+0

计数器不是问题,问题是我的数组中的所有数字都是0,它没有随机化数字,但是我仍然修复它,谢谢你的帮助。 – TheBoringGuy

+0

@TheBoringGuy如果你不验证,可以propably所有的值随机零!和错误将occour :) –