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看起来没那么凌乱,我一定要试试