Запретить пользователю отправлять значение, которое находится за пределами диапазона

#c#

Вопрос:

У меня есть этот блок кода в моей программе на C# (которая в настоящее время предназначена для взрослых в возрасте от 25 до 30 лет).

 Console.Write("Please enter in your age in the range of 25 - 30 years old: ");

string age = Console.ReadLine();
 

Когда пользователю будет предложено, я бы хотел, чтобы они вводили только значения 25, 26, 27, 28, 29 или 30

Я не хочу, чтобы пользователь вводил число за пределами диапазона.

Есть ли способ предотвратить это, чтобы, когда пользователь вводит значение, выходящее за пределы диапазона, отображалось сообщение о том, что пользователь ввел неподходящий номер?

Комментарии:

1. Ну, вы можете использовать int.Parse или int.TryParse получить целое значение из вашего строкового значения, а затем проверить, соответствует ли оно вашим потребностям. В зависимости от вашей платформы вы можете использовать валидатор для обработки этого

2. Вы можете использовать a while -петлю.

Ответ №1:

Ответ Андрея хорош, однако я бы рекомендовал использовать int.TryParse его вместо этого, так как ваши пользователи могут вводить глупые значения, которые в противном случае привели бы к сбою вашей программы (например, с нецифровыми символами).:

 Console.Write("Please enter in your age in the range of 25 - 30 years old: ");

int age;

while (true)
{
    string strAge = Console.ReadLine();
    // checks input validity (integer and within [25-30] range)
    if (int.TryParse(strAge, out age) amp;amp; age >= 25 amp;amp; age <= 30)
    {
        Console.WriteLine("Welcome");
        // ... and we leave the loop
        break;
    }
    else
    {
        Console.WriteLine("Wrong input, please try again");
        // ... and we go back to ReadLine
    }
}
 

Бонус: Приведенный выше код использует цикл, чтобы ваши пользователи могли продолжать вводить значения до тех пор, пока они, наконец, не будут соответствовать критериям

Ответ №2:

Самый простой способ-использовать if оператор. Но сначала вам нужно преобразовать свой возраст в int с помощью Convert.ToInt32 или int.Разбор

 Console.Write("Please enter in your age in the range of 25 - 30 years old: ");
int age = int.Parse(Console.ReadLine());

if(age <= 30 amp;amp; age >= 25)
{
    Console.WriteLine("Welcome");
}
else
{
    Console.WriteLine("Your age is not valid!");
}
 

Комментарии:

1. Спасибо Андрей

2. почему бы не использовать TryParse tho?

3. Добро пожаловать @rpietkiewicz! Вы можете проголосовать за него и отметить как ответ

4. @GogoDev, я использую самый простой метод, потому что, возможно, он еще не знает, как TryParse это работает

5. Использование int.Parse нехорошо, потому что программа выдаст исключение, если пользователь введет что-то, что не является номером. Незнание TryParse этого не имеет значения.