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

  • 144 Просмотры
  • Последний пост 12 августа 2017
Artemiy Bond разместил пост 19 февраля 2017

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 и пока не ясно почему не работает, и в какую сторону нужно "копать". 

Отсортировать по: Стандартный | Последний | Голоса
Олександр Шевчук разместил пост 19 февраля 2017

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

Artemiy Bond разместил пост 19 февраля 2017

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

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

Виталий Гапанюк разместил пост 20 февраля 2017

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

Алексей Демонов разместил пост 26 июля 2017

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

Во-первых, насколько я понял, 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();}

}

Sergey Korobka разместил пост 12 августа 2017

            int a;

            for (; ; )

            {

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

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

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

                Console.ReadKey(true);

            }

 

Close