【发布时间】:2021-04-03 17:05:31
【问题描述】:
所以我对 C# 很陌生,在学习了一些基础知识后,我尝试制作一个简单的程序来使用 if 语句检查某人的资格。 该计划要求提供 3 项内容:年龄、身高和大学学位 您必须是 18 才能参加下一个问题,并且您必须高于 160 厘米 才能参加 CollegeDegree 问题。
现在程序运行良好,但是看它,我意识到有很多嵌套的 if 语句,代码很乱,不可读。
我需要怎么做才能让它更干净?我尝试按以下方式进行操作
if
else
if
else
但是,这会导致问题,如果第一个条件不满足,那么年龄小于 18 岁,它只会运行下一个 if 语句,而不是让用户不合格。
当前代码:
static void Main(string[] args)
{
int ageInput;
int heightInput;
bool hasCollegeDegree;
Console.WriteLine("How old are you?");
ageInput = Convert.ToInt32(Console.ReadLine());
if (ageInput >= 18)
{
Console.WriteLine("You are older than 18");
Console.WriteLine("How tall are you?");
heightInput = Convert.ToInt32(Console.ReadLine());
if (heightInput >= 160)
{
Console.WriteLine("You are taller than 160cm");
Console.WriteLine("Do you have a college degree?");
hasCollegeDegree = Convert.ToBoolean(Console.ReadLine());
if (hasCollegeDegree == true)
{
Console.WriteLine("You have a college degree");
Console.WriteLine("You are eligible");
}
else
{
Console.WriteLine("No College Degree");
Console.WriteLine("You are ineligible");
}
}
else
{
Console.WriteLine("You are too short");
}
}
else
{
Console.WriteLine("You are too young");
}
}
【问题讨论】:
-
你是否也应该在每个
else中写“你不合格”? -
不要忘记插入非数字值而不是年龄数字时会感到疼痛。使用 int.TryParse() 和 bool.TryParse() 代替。
-
如果您使用嵌套的 if 语句,那么只有在外部条件为真时,才能满足内部条件。如果您完全删除嵌套,如果您真的希望它们嵌套,您可能会得到意想不到的结果.....@jjxtra 有一个很好的解决方案,但请记住刚才提到的警告。 jjxtra 的解决方案可以通过小的辅助方法进行重构,使其更具可读性。
标签: c# if-statement conditional-statements