2011-04-25 118 views
0

我有一堆放在列表框中的數據。使用string.substring()方法,我需要返回併爲某些計算返回一些數據(平均值,高分和低分)。我創建了一個名爲「calcStats」的方法來爲我計算這些數據。我完全停留在這個foreach循環中。我怎樣才能找到這些值?有人可以就我應該做什麼提出一些有用的建議,或創建一個簡短的例子,以便我可以學習該怎麼做?C#Listbox/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); 




    } 
+1

你幾乎在那裏 - 你有平均,現在高分和低分,你可以用一個簡單的'if'來確定當前分數是否高於迄今爲止的高分,然後使它成爲高分,相反的低分。 – BrokenGlass 2011-04-25 03:39:52

+0

我看到你編輯了原始問題時提供了答案,爲什麼一般不起作用。這是一種糟糕的做法,而不是這個網站應該如何工作,因爲現在你已經做出瞭解決平均問題的方法。留下你的原始問題,並開始一個新的問題(因爲你有一個新的問題)或要求在評論。 – Pete 2011-04-25 04:36:30

+0

感謝皮特,我是這個網站的新手。有道理:) – Brandon 2011-04-25 04:39:48

回答

0

你的代碼中有無數的錯誤。對於初學者來說,你得到平均60,因爲當你添加50和100它實際上只增加50和10,然後通過1觀看劃分:

foreach (string itemInList in lstBox.Items) 
    { 
     value = decimal.Parse(itemInList.Substring(50, 2)); //This line truncates your score of 100 to 10 
     total += (value); 
    } 
    count++; //This line only runs once. So count is = 1 in the next line 
    adverage = (total)/(count); //Since the '100' was truncated to 10, the total of 50 + 100 is 60. Divide that by count which is only 1 and that's how you get 60. 

爲了解決這個問題,你可以移動的計數++起來的內foreach循環。另外,您也可以通過lstBox.Items.Count分裂和消除變量count:

foreach (string itemInList in lstBox.Items) 
    { 
     value = decimal.Parse(itemInList.Substring(50, 2)); 
     total += (value); 
    } 
    adverage = (total)/lstBox.Items.Count; 
    lblAdverage.Text = Convert.ToString(adverage); 

該代碼段讓你正是你想要的。唯一的問題是它不適用於單數字分數或三位數分數(100)。

只要跟蹤高分,一般的方法就是將第一個分數放到您已有的臨時變量中,high。每當你解析出一個新的分數時,請用高分來檢查它。如果新分數較低,則什麼也不做。如果新分數較高,請將其分配爲高,然後繼續。對於低分只是相反的邏輯。

0

這是一個很好的機會,你要學習如何使用調試器 - 看看調試菜單,學什麼「切換斷點」,「一步」,「步過」,「繼續」的意思,學習如何「觀察變量」。

嘗試谷歌搜索「調試視覺工作室」等

由您學會做這些事情,你應該能夠找出什麼地方錯了你的程序很容易的時候,你就已經學會如何找出未來編寫的其他程序。

相信我,這是不是你寫的,將無法正常工作的時候了:)

而且還嘗試了這些命令的第一個節目 - 「全選」 - 「CNTRL-A」和「格式」 - 「cntrl-k cntrl-d」 - 這將格式化您的整個文檔。

+0

http://stackoverflow.com/questions/5775230/computing-average-high-score-low-score-using-foreach-loop – Brandon 2011-04-25 04:42:49

0

你應該調試拉里說,但我敢肯定,這將有助於

 adverage = total/lstBox.Items.Count; 

一個是編程中最重要的事情是瞭解的API(或在案件的共同運行時庫)。當物體本身告訴你時,沒有理由計算物品的數量。