增加一个双倍值

时间:2012-01-03 09:19:54

标签: c# asp.net

我在我的系统中使用了这部分代码。

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价值?

我如何获得增量值?

5 个答案:

答案 0 :(得分: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。

答案 1 :(得分:2)

我认为不会以某种方式执行IF语句中的代码。 代码+ =确实应该增加值。

您可能希望使用以下忽略大小写的代码:

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

答案 2 :(得分:2)

为了进行比较,您的表值可能会有空格,因此请在代码中使用以下Trim()函数:

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

或@ Aphelion的答案,包括Trim():

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

答案 3 :(得分:1)

请检查您在countA和countB上的增量是否实际执行。我怀疑这可能是使用==而不是字符串上的.equals的问题。

答案 4 :(得分: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);

我添加了一个'test'变量,它会告诉您问题是在代码内还是代码外。另外,尝试设置断点并观察'myrow.grade'的值。古德勒克!