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);
}