【发布时间】:2017-06-28 10:53:30
【问题描述】:
在控制台应用程序中,我试图检查年份的输入值是否在 1-10 之间。
目前我也在使用以下方法检查输入是否为有效的 int。
int numberOfYears;
Console.WriteLine("Enter the number of years:");
string numberOfYearsInput = Console.ReadLine();
while (!Int32.TryParse(numberOfYearsInput, out numberOfYears))
{
Console.WriteLine("Not a valid ammount, try again.");
numberOfYearsInput = Console.ReadLine();
}
我已尝试将其更改为:
while (!Int32.TryParse(numberOfYearsInput, out numberOfYears))
{
Console.WriteLine("Not a valid ammount, try again.");
numberOfYearsInput = Console.ReadLine();
if (numberOfYears < 1 || numberOfYears > 10)
{
Console.WriteLine("Not a valid ammount, try again.");
numberOfYearsInput = Console.ReadLine();
}
}
但是,这会导致输入值不正确。我怎样才能把它结合起来让它工作?
编辑
已更改为以下,仍然允许 11、12 等作为有效输入
Console.WriteLine("Enter the number of years:");
string numberOfYearsInput = Console.ReadLine();
while (!Int32.TryParse(numberOfYearsInput, out numberOfYears))
{
Console.WriteLine("Not a valid ammount, try again.");
numberOfYearsInput = Console.ReadLine();
if (numberOfYears >= 1 && numberOfYears <= 10)
{
Console.WriteLine("Not a valid ammount, try again.");
numberOfYearsInput = Console.ReadLine();
}
}
【问题讨论】:
-
问题是 11 是一个有效的整数,所以通过了 while 循环
-
` if (numberOfYears >1 || numberOfYears