C# 增加一个双倍的值

C# 增加一个双倍的值,c#,asp.net,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(

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

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值


如何获取增量值?

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

我认为IF语句中的代码没有执行。 代码+=确实应该增加值

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

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

必须将前两行和后两行放置在回路外部:

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。

为了进行比较,表值中可能有空格,因此请在代码中使用Trim函数,如下所示:

if(myrow.grade.ToUpper().Trim() == "A")
或者根据@Aphelion的回答,包括Trim:

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

我重构了你的代码。我希望你不会介意

  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”的值。祝你好运

这意味着你的条件不是真的,它们是真的A,B还是可能是A,B为什么不使用int?你有0.10个学生吗?这里的意思是你想显示学生人数的计数?那么你为什么要使用双精度数据类型进行计数?不确定为什么要使用双精度数据类型进行计数变量,可能你应该使用int类型,因为你无论如何都要在代码中使用myrow.grade.ToUpper.Trim==A来增加计数1倍。。!!此外,请检查大小写是否匹配,以及字符串是否没有任何需要首先修剪的空白。为了更好地显示和简化编程,您可以使用switch语句而不是所有if/else if语句。也更容易达到C、D级,E@MoonlightIMO最优雅的方式是创建字典,它将计算所有的分数,但这取决于这里的OP看起来没那么凌乱,我一定要试试