C#鞋店程序SKU校验逻辑异常问题求助
鞋店SKU校验逻辑的问题修复
你的代码存在两个核心问题,直接导致了描述里的异常现象:
问题1:条件判断逻辑完全错误
原代码里的if (sku != s1.SKU || sku != s2.SKU || sku != s3.SKU || sku != s4.SKU || sku != s5.SKU)用了逻辑或(||),这意味着只要SKU不匹配任意一个预设值,条件就成立。但现实中,任何一个SKU都不可能同时等于所有5个预设值,所以这个条件永远为真——不管你输入什么SKU,都会触发无效提示。
问题2:重新输入SKU后无二次校验
就算用户在收到无效提示后输入了正确的SKU,程序也不会对新输入的SKU做有效性判断,直接跳过了询问购买数量的逻辑。
修复后的完整代码
while (keepBuyingShoes == true) { int quantity = 0; string sku = string.Empty; bool isSkuValid = false; // 循环直到输入有效的SKU while (!isSkuValid) { Console.WriteLine("Enter shoe SKU: "); sku = Console.ReadLine(); // 改用逻辑与(&&):只有当SKU和所有预设值都不匹配时,才判定无效 if (sku != s1.SKU && sku != s2.SKU && sku != s3.SKU && sku != s4.SKU && sku != s5.SKU) { Console.WriteLine("That is an invalid SKU number!"); } else { isSkuValid = true; } } // 输入有效SKU后询问数量,同时做输入合法性校验 Console.WriteLine("Enter quantity: "); if (int.TryParse(Console.ReadLine(), out quantity)) { // 这里可以添加你的购买逻辑,比如扣库存、计算总价等 } else { Console.WriteLine("Invalid quantity input! Please enter a number."); } }
核心修改说明
- 把原if条件的
||换成&&,只有当SKU和所有预设值都不匹配时,才提示无效。 - 用嵌套循环处理SKU输入,确保用户必须输入有效SKU才能进入下一步,解决了重新输入后无校验的问题。
- 用
int.TryParse替代int.Parse,避免用户输入非数字时程序直接崩溃,提升了程序的健壮性。
内容的提问来源于stack exchange,提问作者Deasjia Shannon
相关产品推荐
相关产品推荐

