C# 将列表的总和作为变量,并在运行时对其进行编辑
我试图计算特定变量的结束值,这取决于是否选中复选框。然而,这是动态完成的 我正在努力实现的目标: 上面的示例运行良好,但当我开始取消选中复选框时,它开始出错。它减去两倍的时间,我不知道为什么: My Code TimePent是我希望在末尾使用的变量: 阶级 图形用户界面:C# 将列表的总和作为变量,并在运行时对其进行编辑,c#,subtraction,C#,Subtraction,我试图计算特定变量的结束值,这取决于是否选中复选框。然而,这是动态完成的 我正在努力实现的目标: 上面的示例运行良好,但当我开始取消选中复选框时,它开始出错。它减去两倍的时间,我不知道为什么: My Code TimePent是我希望在末尾使用的变量: 阶级 图形用户界面: 为什么减法不正确 未选中复选框时进行减法: if(a.isChecked()) { total += a.getTimeSpent(); } else { total -= a.getTimeSpent();
为什么减法不正确 未选中复选框时进行减法:
if(a.isChecked())
{
total += a.getTimeSpent();
}
else
{
total -= a.getTimeSpent();// << THIS
}
0来自默认值Total int
若要解决此问题,您可以删除else子句,因为您永远不需要减去可计费时间。如果未选中复选框,则进行减去:
if(a.isChecked())
{
total += a.getTimeSpent();
}
else
{
total -= a.getTimeSpent();// << THIS
}
0来自默认值Total int
要解决这个问题,您可以删除else子句,因为您永远不需要减去计费时间。您应该完全删除减法。 因此,将其更改为:
if(a.isChecked())
{
total += a.getTimeSpent();
}
如果total=0,则在计算之前未添加所有值。所以你不需要减法。你应该完全取消减法。 因此,将其更改为:
if(a.isChecked())
{
total += a.getTimeSpent();
}
如果total=0,则在计算之前未添加所有值。因此,您不需要进行减法运算。如果未选中,则逻辑为“如果选中则添加”“如果未选中则减去”。如果仅选中,则应添加逻辑
private void Btn_Validate_Click(object sender, EventArgs e)
{
tb_TotalTime.Text = calculateTotalTime().ToString();
}
public int calculateTotalTime()
{
int total = 0;
foreach (Activity a in activities)
{
if (a.isChecked())
{
total += a.getTimeSpent();
}
}
return total;
}
您的逻辑是“如果选中则添加”“如果未选中则减去”。如果仅选中,则应添加逻辑
private void Btn_Validate_Click(object sender, EventArgs e)
{
tb_TotalTime.Text = calculateTotalTime().ToString();
}
public int calculateTotalTime()
{
int total = 0;
foreach (Activity a in activities)
{
if (a.isChecked())
{
total += a.getTimeSpent();
}
}
return total;
}
在图片中,一切看起来都很好。具体的问题是什么?你在检查的时候加,不是的时候减-5-5+5等于-5。我想你只需要加法,所以去掉其他的。它正在做正确的计算。对于两个未选中的复选框,它变为-10;对于一个选中的复选框,它的值为5,它们的总和变为-5。根据您的期望,结果应该是什么?如果你希望结果是5,你不应该做减法。在图片中,一切看起来都不错。具体的问题是什么?你在检查的时候加,不是的时候减-5-5+5等于-5。我想你只需要加法,所以去掉其他的。它正在做正确的计算。对于两个未选中的复选框,它变为-10;对于一个选中的复选框,它的值为5,它们的总和变为-5。根据您的期望,结果应该是什么?如果你想要结果是5,你就不应该做减法。我不会想到,这就是问题所在。这根本不是编码问题。更多的是一个共同的问题sense@TimSchmelter因为一开始总数是0。然后减去所有未检查的活动时间。第一个是5,第二个是5,第三个是5。第一个和第二个未被检查。总和为0-5-5+5=-5。@TimSchmelter你是如何得出这个结论的?一点道理也没有他似乎明白了now@KahnKah没问题,解决这些问题的最好办法是像解释代码一样仔细阅读代码。当你到达-部分时,你会像那样做。。。嗯。。。这不应该存在。祝你好运我不会想到,这就是问题所在。这根本不是编码问题。更多的是一个共同的问题sense@TimSchmelter因为一开始总数是0。然后减去所有未检查的活动时间。第一个是5,第二个是5,第三个是5。第一个和第二个未被检查。总和为0-5-5+5=-5。@TimSchmelter你是如何得出这个结论的?一点道理也没有他似乎明白了now@KahnKah没问题,解决这些问题的最好办法是像解释代码一样仔细阅读代码。当你到达-部分时,你会像那样做。。。嗯。。。这不应该存在。祝你好运非常感谢,我没注意到非常感谢,我没注意到非常感谢非常感谢