#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
этого не имеет значения.