如何使用自定义count函数返回值进行后续KWH电费相关计算
用户最多可输入3块电表的起止读数,应用将计算每块电表的用电量(KWH)并核算总KWH电费,需兼容“电表跳数(meter roll)”逻辑:4位表盘电表最大读数为9999,当电表计数从9999走到0000后重新正常计数时即为跳数,当结束读数小于起始读数时判定电表已跳数,需确保应用可以正确累计跳数电表的用电量。
问题解决
1. 先修正逻辑错误的count函数
你当前写的count函数存在以下问题:
- 入参
dialcount被直接覆盖为固定值4,入参完全失效 - while循环逻辑错误,会触发死循环
- 没有实现电表跳数的处理逻辑,直接相减会得到错误的负数用电量
修正后的代码如下:
// 计算单块电表用电量,自动处理跳数 private double CalcSingleMeterUsage(int start, int end) { if (end >= start) { return end - start; } // 触发跳数逻辑,4位表最大是9999 return (9999 - start) + end + 1; } // 计算总用电量 public double CountTotalKWH(int meter1s, int meter1e, int meter2s, int meter2e, int meter3s, int meter3e) { double meter1 = CalcSingleMeterUsage(meter1s, meter1e); double meter2 = CalcSingleMeterUsage(meter2s, meter2e); double meter3 = CalcSingleMeterUsage(meter3s, meter3e); return meter1 + meter2 + meter3; }
2. 调用函数获取返回值完成电费核算
调用有返回值的函数时,只需要声明对应类型的变量,把函数调用的结果赋值给这个变量,后续就可以正常使用这个变量做运算。修改后的点击事件代码如下:
private void btnRecal_Click(object sender, EventArgs e) { BindFromUI(); // calculate KWH and meter charge if (goodConvert) { // 调用CountTotalKWH函数,用变量接收返回的总用电量 double totalKWH = CountTotalKWH(meter1s, meter1e, meter2s, meter2e, meter3s, meter3e); // 直接用拿到的totalKWH计算电费即可 chargeKWH = totalKWH * KWH_Usage; meter_charge = meterCount * Meter_Charge; } else { errorMessage = ""; } BindToUI(); }
内容的提问来源于stack exchange,提问作者binty Falme
相关产品推荐
相关产品推荐

