为何不符合条件的Car添加未触发错误提示?If语法问题排查
问题排查方案
1. 逻辑分支写反
最常见的问题是你把判断的分支搞反了:本该满足条件才添加,结果写成了不满足条件就添加。比如错误代码:
if (!(car.DailyPrice > 10 && car.BrandName.Length > 2)) { // 添加到集合的代码 } else { Console.WriteLine("Error"); }
你的测试实例刚好不满足DailyPrice>10且BrandName长度>2,所以会走添加分支,不会输出Error。
2. 条件运算符或方向错误
比如把逻辑与(&&)写成逻辑或(||),或者把>写成<。比如写成car.DailyPrice < 10 && car.BrandName.Length < 2,你的测试实例刚好符合这个条件,直接被添加。
3. 判断的不是传入的car实例
如果在Add方法里,你判断的是当前类实例的属性(比如this.DailyPrice),而不是传入的参数car,就会完全偏离预期逻辑。比如错误代码:
public void Add(Car car) { // 错误:用了当前实例的属性,不是传入的参数 if (this.DailyPrice > 10 && this.BrandName.Length > 2) { _cars.Add(car); } else { Console.WriteLine("Error"); } }
4. 错误提示代码未执行
比如你把Console.WriteLine("Error");注释掉了,或者写错了输出语句,导致即使走了错误分支也看不到提示。
快速定位技巧
在Add方法里加几行调试输出,直接看判断逻辑的执行结果:
public void Add(Car car) { Console.WriteLine($"传入的日租价: {car.DailyPrice}, 品牌名长度: {car.BrandName.Length}"); bool meetsCondition = car.DailyPrice > 10 && car.BrandName.Length > 2; Console.WriteLine($"是否符合添加条件: {meetsCondition}"); if (meetsCondition) { _cars.Add(car); Console.WriteLine("已添加到集合"); } else { Console.WriteLine("Error"); } }
运行后看控制台输出,就能一眼看出是条件判断错了,还是分支走反了。
内容的提问来源于stack exchange,提问作者Sandalj
相关产品推荐
相关产品推荐

