You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

汽车服务复选框选中项总计累加异常问题排查

问题分析

你的代码中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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 16:01:17