C#需求:将计算得到的负总结果转换为0(附现有代码)
需求与代码优化
需求
当计算得出的总结果为负数时,返回0作为最终结果。
原代码
Double Apoints,Bpoints,Cpoints,Dpoints, Majortotalpoints,Totalmisses,Totalpoints; Majortotalpoints=Apoints+Bpoints+Cpoints+Dpoints-Totalmisses; Pointshandgun.text= Majortotalpoints.ToString(); Apoints = Convert.ToInt32(MajorApoints.Text)*5; Bpoints = Convert.ToInt32(MajorBpoints.Text)*4; Cpoints = Convert.ToInt32(MajorCpoints.Text)*4; Dpoints = Convert.ToInt32(MajorDpoints.Text)*2; Totalmisses = Convert.ToInt32(Totalmisshandgun.Text)*10;
问题分析
原代码存在两个核心问题:
- 变量赋值顺序错误:先计算总分数
Majortotalpoints,但此时Apoints、Totalmisses等变量未完成赋值,会导致计算结果异常 - 未实现"负数返回0"的需求
优化后的代码
// 先计算各分项分数与扣分数值 double Apoints = Convert.ToInt32(MajorApoints.Text) * 5; double Bpoints = Convert.ToInt32(MajorBpoints.Text) * 4; double Cpoints = Convert.ToInt32(MajorCpoints.Text) * 4; double Dpoints = Convert.ToInt32(MajorDpoints.Text) * 2; double Totalmisses = Convert.ToInt32(Totalmisshandgun.Text) * 10; // 计算总分数,通过Math.Max确保结果不会为负 double Majortotalpoints = Math.Max(Apoints + Bpoints + Cpoints + Dpoints - Totalmisses, 0); // 将结果赋值到控件 Pointshandgun.Text = Majortotalpoints.ToString();
说明
- 调整赋值顺序:先完成所有分项数据的计算,再统计总分数,保证变量都有有效取值
- 处理负数结果:用
Math.Max(计算值, 0)实现需求,当计算结果为负时自动返回0 - 代码规范修正:变量名首字母小写(符合C#命名规范),补充语句末尾分号,修正控件属性大小写(
Text而非text)
内容的提问来源于stack exchange,提问作者darshan
相关产品推荐
相关产品推荐

