汽车服务复选框选中项总计累加异常问题排查
问题分析
你的代码中total是类的成员变量,每次点击计算按钮调用OilLubeCharges()时,都会在之前的total值基础上累加选中服务的费用,而非重新计算当前选中项的总和。这就导致取消之前的选项后,历史费用依然保留在total中,最终结果变成累加值,而非当前选中项的实际总价。
修复方案
有两种简单的修复方式:
方式一:每次计算前重置总和
在计算前将类级别的total清零,确保只统计当前选中的服务:
private void calculateButton_Click(object sender, EventArgs e) { total = 0; // 重置总和,避免历史值干扰 totalFeesOutput.Text = OilLubeCharges().ToString("C"); }
方式二:使用局部变量计算(更推荐)
移除类级别的total变量,在计算方法内使用局部变量统计当前选中项的总和,从根源避免全局状态残留问题:
// 移除类中的int total = 0;定义 private int OilLubeCharges() { int currentTotal = 0; // 局部变量,每次调用都会重新初始化 if (oilChangeCheckBox.Checked) { currentTotal += oilChange; } if (lubeJobCheckBox.Checked) { currentTotal += lubeJob; } return currentTotal; } private void calculateButton_Click(object sender, EventArgs e) { totalFeesOutput.Text = OilLubeCharges().ToString("C"); }
额外提示:代码中const int salesTax = (6 / 100);是整数除法,结果为0,若要计算6%的销售税,建议改为const decimal salesTax = 0.06m;,避免精度丢失。
内容的提问来源于stack exchange,提问作者Javon Baker
相关产品推荐
相关产品推荐

