В настоящее время я пытаюсь определить две целые переменные с помощью ввода пользователем. Если пользователь вводит целое число, которое не содержится в определенном диапазоне, пользователю будет предложено ввести его снова, пока пользователь не введет принятое значение.Доступ к локальной переменной внутри цикла while #
static void Main(string[] args)
{
int a;
int b;
bool isAValid = false;
bool isBValid = false;
while (isAValid == false)
{
Console.Write("Input number from 2 to 20: ");
isAValid = true;
a = Convert.ToInt16(Console.ReadLine());
if (a < 2 || a > 20)
{
isAValid = false;
}
}
while (isBValid == false)
{
Console.Write("Input number from 2 to 20: ");
isBValid = true;
b = Convert.ToInt16(Console.ReadLine());
if (b < 2 || b > 20)
{
isBValid = false;
}
}
}
То, что я пытаюсь сделать, это сохранение пользовательского ввода в в и б соответственно, так что локальная переменная величина определяется как значение пользовательского ввода. Тем не менее, когда я пытаюсь получить доступ к локальной переменной после того, как последний цикл был сломан, я получаю «Использование неназначенной локальной переменной a (или b)».
Любые идеи о том, как я могу определить переменные, все еще имея цикл ввода ввода?
Просьба показать заявление, на которое указывает ошибка. –
Существует буквально сотни сообщений на этом сайте с заголовком «Использование неназначенной локальной переменной». Прочтите их и поймите это сообщение об ошибке. –
@ Eric Program flow afaics гарантирует, что они будут назначены (если исключение не будет вызвано конверсией); Я полагаю, что то, что озадачивает OP, заключается в том, что компилятор не может видеть, что мы видим: что циклы while всегда вводятся, и поэтому всегда выполняются вход и назначение. Интересно, поможет ли компилятор (более подходящий) цикл do-while. –