C#:尝试创建一家鞋店:尝试评估正确的 SKU

问题描述 投票:0回答:1

我正在尝试创建一个鞋店程序,用户可以在其中输入 SKU 编号来获取所需的鞋子。我正在尝试创建一个 if 语句,如果 SKU 匹配,则询问用户数量,如果无效,则显示“输入有效的 SKU:”。现在可以了,但无论我输入什么 SKU,它都会自动提示该编号无效。然后,当条目有效时,它不再询问数量!

while (keepBuyingShoes == true)
{
    // ask user for sku and quantity 
    int quantity = 0;
    Console.WriteLine("Enter shoe SKU: ");
    String sku = Console.ReadLine();
    if (sku != s1.SKU || sku != s2.SKU || sku != s3.SKU || sku != s4.SKU || sku != s5.SKU)
    {
       Console.WriteLine("That is an invalid SKU number!");
       Console.WriteLine("Enter shoe SKU: ");
       sku = Console.ReadLine();
    }
    else if (sku == s1.SKU || sku == s2.SKU || sku == s3.SKU || sku == s4.SKU || sku == s5.SKU)
    {
      Console.WriteLine("Enter quantity: ");
      quantity = int.Parse(Console.ReadLine());
    }
c# if-statement sku
1个回答
0
投票

您是否注意到在两个

||
陈述中如何使用
if
,尽管其中一个应该与另一个相反?这不奇怪吗?

您的情况有误:

if (sku != s1.SKU || sku != s2.SKU || sku != s3.SKU || sku != s4.SKU || sku != s5.SKU)
{
    // ...
}

看到那些

||
了吗?那不是你想要的。如果您真正考虑一下逻辑,这一点是显而易见的:您本质上是在说“如果 SKU 不是 s1、不是 s2、不是 s3、不是 s4 或不是 s5……”。为了使这个错误,SKU 必须同时是“所有这些”,这是不可能的。所以,这是一个同义反复。难怪它总是进入那个if
解决方案是使用 

&&

代替:

if (sku != s1.SKU && sku != s2.SKU && sku != s3.SKU && sku != s4.SKU && sku != s5.SKU)
{
    // ...        
}

这样,如果 SKU 不是其中任何一个,您就输入 
if

然后你可以将以下

else if

变成常规的

else
    

© www.soinside.com 2019 - 2024. All rights reserved.