繁体   English   中英

C#:如何防止所有“ if”语句连续执行

[英]C#: How to prevent all “if” statements from being executed consecutively

我有一个使用Visual Studio和控制台模板的C#程序。 我所有的if语句都连续运行。 如果条件为真,我只希望评估if语句的块作用域之一,而运行一个条件时忽略其他条件。

这是我所拥有的:

Console.WriteLine("What is your age?");
string age = Console.ReadLine();

int ageInt;
Int32.TryParse(age, out ageInt);
if (ageInt >= 17)
{
    Console.WriteLine("You are rather young!");
    Console.WriteLine("Press any key to continue...");
    Console.ReadKey(true);
}
if (ageInt >= 18)
{
    Console.WriteLine("You are young, but technically an adult!");
    Console.WriteLine("Press any key to continue...");
    Console.ReadKey(true);
}
if (ageInt >= 21)
{
    Console.WriteLine("You are of legal drinking age! A semi-adult!");
    Console.WriteLine("Press any key to continue...");
    Console.ReadKey(true);
}
if (ageInt >= 30)
{
    Console.WriteLine("You are a true adult!");
    Console.WriteLine("Press any key to continue...");
    Console.ReadKey(true);
}

当应该为每个if语句显示消息时,控制台将仅显示第一个if语句,然后仅运行其他每个if语句。 谁能帮助我找出如何更改代码以执行我想要的事情?

解决方案:我需要做的就是颠倒if语句的顺序,并使其他if语句成为“ else if”语句,如下所示:

if (ageInt == 100)
{
    Console.WriteLine("You are really old!");
    Console.WriteLine("Press any key to continue...");
    Console.ReadKey(true);
}
else if (ageInt >= 62)
{
    Console.WriteLine("You should retire!");
    Console.WriteLine("Press any key to continue...");
    Console.ReadKey(true);
}
else if (ageInt >= 30)
{
    Console.WriteLine("You are a true adult!");
    Console.WriteLine("Press any key to continue...");
    Console.ReadKey(true);
}
else if (ageInt >= 21)
{
    Console.WriteLine("You are of legal drinking age! A semi-adult!");
    Console.WriteLine("Press any key to continue...");
    Console.ReadKey(true);
}

您需要做两件事。

  • 反转支票的顺序。 您想先检查最具体的一个(即大于30)
  • 然后使用else if来确保仅执行其中一个块。

代码如下所示:

if (ageInt >= 30)
{
    Console.WriteLine("You are a true adult!");
    Console.WriteLine("Press any key to continue...");
    Console.ReadKey(true);
}
else if (ageInt >= 21)
{
    Console.WriteLine("You are of legal drinking age! A semi-adult!");
    Console.WriteLine("Press any key to continue...");
    Console.ReadKey(true);
}
// ...

您必须取消订单,因为如果您的年龄> 30岁,那么所有这些检查都将运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM