我正在尝试创建一个鞋店程序,用户可以在其中输入 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());
}
您是否注意到在两个
||
陈述中如何使用 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
。