【问题标题】:if statement seems to not be working with multiple conditionsif 语句似乎不适用于多个条件
【发布时间】:2017-12-05 16:21:55
【问题描述】:

我不确定我是否重载了任何东西,但是当我将所有需要的条件添加到一个 if 语句时,它总是返回 true。它似乎总是显示我的错误消息,但是当我只添加一个条件时,它工作得很好。另外,我知道我的代码很乱,我只是一个新手,请放轻松。

Console.ForegroundColor = ConsoleColor.Green;
string[] Class = new string[] { "AA", "BB", "CC", "DD", "EE", "FF", "GG", "HH", "II", "JJ", "KK", "LL", "MM", "NN", "OO" };
double[] Rate = new double[] { .015, .023, .010, .042, .051, .004, .022, .030, .001, .010, .020, .030, .045, .033, .050 };
Console.Write("Please enter vehicle classification: ");
string Vclass = Console.ReadLine();
if (Vclass != "AA" || Vclass != "BB" || Vclass != "CC" || Vclass != "DD" || Vclass != "EE" || Vclass != "FF" || Vclass != "GG" || Vclass != "HH" || Vclass != "II" || Vclass != "JJ" || Vclass != "KK" || Vclass != "LL" || Vclass != "MM" || Vclass != "NN" || Vclass != "OO")
{
        Console.ForegroundColor = ConsoleColor.Red;
        Console.WriteLine("There is an error with the vehicle class.");
        Console.ForegroundColor = ConsoleColor.Green;
}

【问题讨论】:

  • ||OR 运算符。如果您输入AA,则输入AA != BB,这将进入if 语句。
  • Vclass != "AA" || Vclass != "BB" 始终为真,您需要使用&&(或! Class.Contains(Vclass))。
  • 该值将始终不是其中至少一个。
  • 我假设你想要像 if (!Class.Contains(VClass)) { ... } 这样的东西,尽管这会区分大小写

标签: c# .net


【解决方案1】:

我有一碗水果。我想确保里面没有我不喜欢的水果。我喜欢的水果有:苹果香蕉葡萄猕猴桃

所以我不喜欢的是那些不是 apples AND 不是 bananas AND不是葡萄 AND不是猕猴桃

我不喜欢的绝对不是那些不是苹果 OR 香蕉 OR 葡萄 猕猴桃

|| 相当于一个惰性OR。您的条件应该是使用惰性AND&&

if (Vclass != "AA" && 
    Vclass != "BB" && 
    Vclass != "CC" && 
    Vclass != "DD" && /*..etc*/)

【讨论】:

  • 非常感谢,这是“现在我感到愚蠢的时刻”之一。
  • @MatthewFinateri 哦,我们都有很多这样的人,不要出汗;)
  • @MatthewFinateri:有时我们都会遇到复杂的 if 语句。另一种方法是列出所有有效条件然后否定它 - if (! (VClass=="AA" || VClass=="BB" .... ))
【解决方案2】:

所以,基本上,你正在寻找这个:

Console.ForegroundColor = ConsoleColor.Green;
string[] Class = new string[] { "AA", "BB", "CC", "DD", "EE", "FF", "GG", "HH", "II", "JJ", "KK", "LL", "MM", "NN", "OO" };
double[] Rate = new double[] { .015, .023, .010, .042, .051, .004, .022, .030, .001, .010, .020, .030, .045, .033, .050 };
Console.Write("Please enter vehicle classification: ");
string Vclass = Console.ReadLine();
if (!Class.Contains(Vclass))
{
    Console.ForegroundColor = ConsoleColor.Red;
    Console.WriteLine("There is an error with the vehicle class.");
    Console.ForegroundColor = ConsoleColor.Green;
}

【讨论】:

  • 我认为从 OP 试图确保输入的文本包含在 Class 数组中的问题中可以清楚地看出,这是您的第二个示例。
  • 这就是 OP 想要的——但答案并没有解释为什么他的 if 语句不起作用——在这种情况下回答这个问题更重要。
  • 好的,感谢您的反馈。但是,我不会回答人们的问题来投反对票。
  • 不是反对者,但可以说你没有回答任何问题。对为什么这样可以解决问题的简短解释是可取的。
  • It takes your explanation and an example to be able to grok the concept. - 您的答案中缺少其中之一。
猜你喜欢
  • 2022-06-28
  • 2022-12-26
  • 1970-01-01
  • 1970-01-01
  • 2013-12-17
  • 2020-12-29
  • 2023-01-12
  • 1970-01-01
  • 2017-09-25
相关资源
最近更新 更多