不输入 if/else 块
本文关键字:else if 输入 | 更新日期: 2023-09-27 18:30:31
我有以下代码。当我在控制台中键入0
时,我希望控制台显示"请重新输入您的年龄",但该if
块永远不会进入并且程序退出。我做错了什么?
Console.WriteLine("Please entre your first name:");
Console.ReadLine();
Console.WriteLine("Please enter your last name:");
Console.ReadLine();
Console.WriteLine("Please type your age:");
Console.ReadLine();
int minAge = 18;
int maxAge = 68;
if (minAge < 18)
if (maxAge > 68)
Console.WriteLine("Please re-enter your age");
else
Console.WriteLine("Please choose f for female or m for male:");
您没有将用户输入读取到age
变量中。执行此操作时,您需要考虑用户可能键入非数字字符。您也没有将if
/else
块包装在大括号内,这会导致逻辑流程与您的意图不匹配。
以下代码将控制台输入读入 age 变量,使用 int 拒绝不可分析的输入。TryParse,它将minAge
值和maxAge
值保留为常量。我们一直循环,直到用户输入了一个有效的数字作为年龄,如果他们因为太年轻或太老而没有资格继续,则退出:
const int minAge = 18;
const int maxAge = 68;
int age;
do
{
Console.WriteLine("Please type your age:");
} while (!int.TryParse(Console.ReadLine(), out age));
if (age < minAge || age > maxAge)
{
Console.WriteLine("I'm sorry, this application is for people aged {0} to {1} only", minAge, maxAge);
return; // or exit console app
}
Console.WriteLine("Please choose f for female or m for male:");
您没有存储输入的年龄。因此,程序永远不会进入下一部分,因为您正在比较 minAge 与 minAge 以及 maxAge 与 maxAge。也许你可以使用
int age = Convert.ToInt32(Console.Readline())
编辑:如果您不想要任何异常,您可以使用
int age;
bool res = Int32.TryParse(Console.Readline(), out age);
if (!res)
Console.WriteLine("Please re-enter your age");
然后在下一部分使用它们
if (age < minAge || age > maxAge )
Console.WriteLine("Please re-enter your age");
else
Console.WriteLine("Please choose f for female or m for male:");
尝试以下方法可能会有所帮助,
int userage;
Console.WriteLine("Please type your age:");
userage=int.Parse(Console.ReadLine());
int minAge = 18;
int maxAge = 68;
if (userage>minAge || userage<maxAge)
Console.WriteLine("Age is not accepted");
else
Console.WriteLine("Your Age is {0}",userage.ToString());
//do what ever you want
//Console.WriteLine("Please choose f for female or m for male:");
Console.ReadLine();