2011-04-25 145 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