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

时间:2015-11-22 04:22:57

标签: c# if-statement

我有一个C#程序,使用Visual Studio和控制台模板。我的所有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);
}

2 个答案:

答案 0 :(得分:4)

你需要做两件事。

  • 撤销支票的顺序。您想先检查最具体的一个(即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);
}
// ...

答案 1 :(得分:-1)

你必须翻转订单,因为如果你的年龄是> 30,所有这些都将进行检查。