2016-02-19 72 views
0
int n = OgrencilerListBox.Items.Count; 
double sum = 0; 
for (int i = 0 ; i < n;i++) 
{ 
    sum = sum + double.Parse(OgrencilerListBox.Items[i].ToString()); 
} 
double result = sum/n; 
OrtalamaLabel.Text = result.ToString(); 

的错误消息指出(在第6行)与列表框管理平均

类型 'System.FormatException' 的未处理的异常发生在 mscorlib.dll中

+2

显然的列表框项目至少一个不是数量。你能展示你如何填充项目列表框? –

+1

...并且最好包括一张支票,如果n> 0。 – LarsTech

+0

如果您在下面找到您的答案,请不要忘记上注并查看标记。 –

回答

0

正如在评论中提到的那样,显然被解析的东西不是一个数字。为了解决这个问题,为什么不使用Double.TryParse(string,out double)?

这将缓解试图找出什么是数字,什么不是。

double result = 0; 
double sum = 0; 

foreach(var item in OgrencilerListBox.Items){ 

    double parsedItem; 

    string yourItem = item.ToString(); 

    bool parsed = Double.TryParse(yourItem,out parsedItem); 

    if(parsed){ 
     sum+=parsedItem; 
    } 
    else{ 
     continue; 
    } 
} 

result = sum/OgrencilerListBox.Items.Count; 

You can read more about Double.TryParse on the MSDN documentation here

0

这意味着至少有一个OgrencilerListBox.Items中的元素不能被double.Parse解析为双倍。

也许您使用,而不是.作为逗号分隔符,或者它根本不是数字。为了避免异常

的一个好方法是,如果您发布的ListBox的示例值使用.TryParse()方法,例如Double.TryParse(string,out double)

,我们可以进一步调查。