Я новичок в программировании и пытаюсь решить проблему. У меня есть массив, который я хочу заполнить вводом от пользователя, но я хочу убедиться, что это только целые числа от 1 до 25 и нет ввода строки. Как мне это сделать?
Код, который я получил так далеко, таков:
for (int i = 0; i < lottery.Length; i++)
{
Console.Write(i + ": ");
try
{
input = int.Parse(Console.ReadLine());
lottery[i] = input;
}
catch
{
Console.WriteLine("Only integers!");
i--;
}
}
Эти коды гарантируют, что единственным входом в массив являются целые числа, но как заставить пользователя записывать только числа от 1 до 25? Я пробовал разные операторы if и другие циклы 3 часа, но не могу их решить. Пожалуйста помоги.
Я бы посоветовал посмотреть, что такое while
look. По сути, в рамках одной итерации цикла for
вы хотите продолжать запрашивать число, пока не будет предоставлено правильное целочисленное значение.
if (input>=1 && input<=25)
.........?
Вы не должны использовать исключения для управления своим кодом. Исключения дорого обходятся с точки зрения производительности, и если есть способ избежать их, вы всегда должны использовать этот способ.
В вашем случае вы должны использовать int32.TryParse вместо Parse. Этот TryParse не вызывает исключение, если входные данные не являются допустимым целым числом, но возвращает значение false или true, в то время как проанализированное число (если оно является целым числом) возвращается в параметре out, переданном методу.
Это позволяет писать гораздо более простой код с циклом while для продолжения ввода в случае ошибок.
for (int i = 0; i < lottery.Length; i++)
{
Console.Write(i + ": ");
// Start the loop with an invalid input
int input = 0;
while(input == 0)
{
if (int32.TryParse(Console.ReadLine(), out input);
{
// Got a valid integer, add out acceptance logic here
if (input > 0 && input <= 25)
lottery[i] = input;
else
{
Console.WriteLine("Type a number between 1 and 25");
// Not a valid range. Force the loop to continue
input = 0;
}
}
else
Console.WriteLine("Write only integers between 1-25");
}
}
int[] lottery = new int[5];
for (int i = 0; i < lottery.Length; i++)
{
Console.WriteLine(i + ": ");
int input;
while(true)
{
string inp = Console.ReadLine();
if (Int32.TryParse(inp, out input) == true)
{
if (0 < input & input <= 25)
{
break;
}
else
{
Console.WriteLine("Only numbers 1-25");
}
}
else
{
Console.WriteLine("Only Integers");
}
}
lottery[i] = input;
}
пожалуйста, включите описания в свой ответ - только код не так уж полезен.
Неправильно, не контролируйте код с помощью исключений. Вместо этого используйте TryParse и удалите исключение