2012-01-03 42 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