C#:如何防止所有“;如果“;语句被连续执行

本文关键字:语句 连续 执行 如果 何防止 | 更新日期: 2023-09-27 18:23:45

我有一个C#程序,使用Visual Studio和控制台模板。我的所有if语句都是连续运行的。如果条件为true,我只想计算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);
}

C#:如何防止所有“;如果“;语句被连续执行

您需要做两件事。

  • 把支票的顺序颠倒一下。你想先检查最具体的一个(即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岁,所有这些if检查都将运行。