Присвоение значения переменной в цикле

Hi all!

Не удается повторно присвоить значение переменной в цикле:

for (; ; )

{

int a;

Console.WriteLine("Введите число");

a = Convert.ToInt32(Console.ReadLine()); // Ошибка на второй итерации.

Console.WriteLine("Введено число: {0}", a);

Console.Read();

}

На второй итерации еще до ввода значения в ReadLine выпадает ошибка:

"Необработанное исключение типа "System.FormatException" в mscorlib.dll. Дополнительные сведения: Входная строка имела неверный формат". Почему так происходит?

Причем не в цикле подобный код работает:

int a;

Console.WriteLine("Введите число");

a = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("вы ввели число: {0}", a);

Console.WriteLine("Введите число");

a = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("вы ввели число: {0}", a);

По курсам пока дошел до C# Starter Lessson 7 и пока не ясно почему не работает, и в какую сторону нужно "копать".

Console.Read(); с цикла уберите.

Не совсем понял почему и зачем? Без цикла работает, но мне нужно несколько раз принимать значение от пользователя.

P.S. Если рассматривать частный случай, то речь идет о калькуляторе, в одной итерации аргументу№1 присваивается одно значение, во второй итерации другое значение.

А зачем этот метод в цикле? Какую роль он выполняет? (я имею ввиду Read())

Некропост, но мало ли:

Во-первых, насколько я понял, Console.Read() тут выполняет функцию "паузы", но он же "съедает" первую нажатую клавишу, лучше использовать ReadKey или ReadLine, это для начала

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

while (true)

{

Console.WriteLine("Введите число");

try

{

int a = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("Введено число: {0}", a);

}

catch(Exception e){Console.WriteLine (e.Message);}

finally{Console.ReadKey();}

}

int a;

for (; ; )

{

Console.Write("Введите число : ");

a = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("Введено число: {0}", a);

Console.ReadKey(true);

}