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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 00:35:06