2012-01-03 39 views
0

我在我的系統中使用了這部分代碼。增加一個雙精度值

double countA = 0.00; 
double countB = 0.00; 


if (myrow.grade == "A") 
{ 
    countA += 1.00; 
} 
else if (myrow.grade == "B") 
{ 
    countB += 1.00; 
} 

countALabel.Text = Convert.ToString(countA); 
countBLabel.Text = Convert.ToString(countB); 

的代碼應該是計算有多少學生在我examMarks表中得到「A」或「B」,並使用標籤顯示。然而,即使有學生在我的桌子上得到「A」和「B」,我仍然得到0的價值?

我如何得到增量值?

+0

這將意味着你的條件不被評估爲真,他們真的是A,B還是它可能是a,b – V4Vendetta 2012-01-03 09:23:41

+6

爲什麼不使用int?你有0.10名學生嗎? – Moonlight 2012-01-03 09:24:02

+0

這意味着你想顯示學生數量的計數嗎?那麼爲什麼你使用雙數據類型計數? – 2012-01-03 09:24:30

回答

1

我重構了你的代碼。我希望你不會介意。

double countA= 0.00; 
    double countB= 0.00; 
    int test= 0; 

    string entry= myrow.grade.Trim().ToUpper(); 

    switch(entry) 
    { 
     case "A": 
     countA++; 
     break; 
     case "B": 
     countB++; 
     break; 
     default: 
     test++; 
    } 

    countALabel.Text = Convert.ToString(countA);  
    countBLabel.Text = Convert.ToString(countB); 

我添加了一個'測試'變量,它會告訴你問題是在代碼內還是在代碼之外。另外,嘗試放置一個斷點並觀察'myrow.grade'的值。祝你好運!

+0

它看起來不那麼亂,當然我會試試看 – Eppiey 2012-01-03 10:50:06

1

請檢查您的增量countA和countB是否實際執行。我懷疑這可能是使用==代替String上的.equals的問題。

+1

此外,檢查案例是否匹配,以及如果字符串沒有任何空白,您需要首先修剪。 – 2012-01-03 09:24:39

2

我認爲IF語句中的代碼不會被執行。 代碼+ =確實應該增加值。

您可能需要使用下面的代碼忽略外殼:

if (myrow.grade.Equals("A", StringComparison.OrdinalIgnoreCase) { } 
3

您必須將前兩行和外循環最後兩行的地方:

double countA = 0.00; 
double countB = 0.00; 
foreach (MyRow myrow in rows) 
{ 
    if (myrow.grade == "A") 
    { 
     countA += 1.00; 
    } else if (myrow.grade == "B") 
    { 
     countB += 1.00; 
    } 
} 
countALabel.Text = Convert.ToString(countA); 
countBLabel.Text = Convert.ToString(countB); 

通過讓他們都在循環內部,你總是檢查最後一個等級,這可能既不是A也不是B,因此你在兩個中都得到0。

+0

爲了更好看(更簡單的編程),您可以使用switch語句而不是所有的if/else if語句。 (也更容易到廣告級C,D,E) – Moonlight 2012-01-03 09:44:29

+0

@Moonlight最優雅的方式IMO正在創建'字典',將計數所有等級,但這取決於OP在這裏決定。 :) – 2012-01-03 09:58:44

2

爲了比較,有可能是你的表值內部空間,所以請在你的代碼如下使用Trim()功能:

if(myrow.grade.ToUpper().Trim() == "A") 

或@的建議遠日點的答案,包括TRIM():

if (myrow.grade.Trim().Equals("A", StringComparison.OrdinalIgnoreCase) { } 
+0

工程就像一個魅力! – Eppiey 2012-01-03 10:08:38