2011-04-25 110 views
0

我有以下代码。我如何让一位和两位数的百分比都起作用并且不会导致异常?使用foreach循环计算平均值,高分,低分

private void calcStats() 
{ 
    string value; 
    int value2; 
    int total = 0; 
    decimal adverage; 
    decimal high; 
    decimal low; 

    lblHigh.Text = Convert.ToString(0); 

    foreach (string itemInList in lstBox.Items) 
    { 
     value = (itemInList.Substring(50, 3)); 
     value2 = int.Parse(value); 

     total += (value2); 
    } 

    adverage = total/(lstBox.Items.Count); 

    lblAdverage.Text = Convert.ToString(adverage); 
} 
+2

你的问题还不清楚。 – 2011-04-25 04:46:00

+0

基本上我是拉出列表框中的信息。我拉百分比(从1-100的值),我需要将它们转换为整数做一些计算。 – Brandon 2011-04-25 04:48:15

+0

如果我有两位数的百分比,它会读“15”,当我尝试转换它会导致错误。 – Brandon 2011-04-25 04:50:26

回答

1

这次你的问题是在你的代码的另一部分。在你btnAdd_Click方法你有一段代码是这样的:

//Add the data elements to the row 
    row = name.ToString().PadRight(25); 
    row += ID.ToString().PadRight(25); 
    row += score.ToString(); 

您需要垫分数以及:

//Add the data elements to the row 
    row = name.ToString().PadRight(25); 
    row += ID.ToString().PadRight(25); 
    row += score.ToString().PadRight(3); 

没有PadRight(3)您的单一和两位数的得分会抛出一个异常,因为这单个数字位于第50位,并且在该单个数字后没有任何可读的数字。通过填充它,你知道所有3个可能的分数(单人,双人,三人数)都占了。解析函数将照顾空白,只是给你的数字,无论是1,10,还是100.

+0

这会导致另一个错误。例如,我创建的方法已经捕获“100”。如果这个百分比是59,那么它将会获得“59”。 – Brandon 2011-04-25 04:55:28

+0

我不知道该告诉你什么。我有我的电脑上运行的代码,它在8,100和59的分数上正确地计算出55.66的平均值。我不知道我还能为你做些什么。您需要使用调试器逐步调试代码,并找出问题出在哪里。 – Pete 2011-04-25 04:58:20

+0

你说得对。简单的错误我的结局。 – Brandon 2011-04-25 05:03:16