我有一个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);
}
答案 0 :(得分:4)
你需要做两件事。
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,所有这些都将进行检查。