Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 38
1

Вылетает цикл

22.05.2011, 18:40. Показов 1490. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Прошу помочь мне вот в какой проблеме.Вот код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  public void zdelat_hod()
            {
                int tmp; 
                Console.WriteLine("Gelaete li vy pererabotat' ESM v EGP?(y/n)");
                char answer = Convert.ToChar(Console.Read());
                if (answer == 'y')
                {
                    Console.WriteLine("vy imeete " + this.firm.Count + " prostyh firm i " + this.Afirm.Count + " avtomatycheskyh firm.");
                    if (this.Afirm.Count == 0)
                    {
                        Console.WriteLine("skolko ESM vy gelaete peredelat'?");
                        while (answer == 'y')
                        {
                            tmp = Console.Read();
                            if ((tmp * this.cena_na_potochnu_ESM <= this.account) && (this.ESM - tmp) >= 0)
                                Console.WriteLine("u vas nedostatochno sredstv!Gelaete izmenyt' danye?");
                            else
                            {
                                Console.WriteLine("vash zapros uspeshno vypolnen!!!");
                                this.EGP += tmp;
                                this.ESM -= tmp;
 
                            }
                            answer =Convert.ToChar(Console.Read());
                        }
                    }
                }
            }
Почему у меня после while (answer == 'y') оно пролетает tmp = Console.Read();,а идет сразу на else...?
Подскажите пожалуйста в чем проблема?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.05.2011, 18:40
Ответы с готовыми решениями:

Вылетает цикл
Не могу понять почему вылетает цикл, собственно опыт не большой, пытался исправить, не выходит....

Почему если условие входа в цикл не выполняется, функция заново входит в цикл
Сам код: private void traverse_node(TreeControlItem node) { TreeControlItem...

Помогите заменить цикл forech на простой цикл for
Помогите пожалуйста, срочно. foreach (char xx in strX) { tmp = xx; ...

Цикл foreach заменить на двойной цикл for
int mas = new int; Random Gen = new Random(); for (int i = 0; i &lt;...

10
95 / 95 / 15
Регистрация: 11.11.2010
Сообщений: 424
22.05.2011, 18:58 2
Пролетать оно не должно, если зашло в while. Проверяли брэкпоинтами?
0
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 38
22.05.2011, 19:02  [ТС] 3
Вот в том то и дело,что в while оно зашло.Оно просто проигнорировало tmp = Console.Read();
И я не понимаю почему...?
0
95 / 95 / 15
Регистрация: 11.11.2010
Сообщений: 424
22.05.2011, 19:04 4
То есть вы ввели символ, и он не записался в tmp?
А вы попробуйте его вывести, вдруг просто у вас условие не выполняется и поэтому идёт сразу на else.
0
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 38
22.05.2011, 19:07  [ТС] 5
оно даже не дает возможности ввести символ.просто пропускает эту строчку...
0
30 / 30 / 10
Регистрация: 18.05.2011
Сообщений: 76
22.05.2011, 19:08 6
у тебя цикл while получается безконечный т.к значение answer нигде не изменяется после входа в цикл, и попробуй так :
C#
1
tmp = Console.ReadLine();
0
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 38
22.05.2011, 19:12  [ТС] 7
послушал вашего совета и попробовал потом вывести tmp.Показало что tmp=13.Вот теперь я уже ничего не понимаю=)

Добавлено через 2 минуты
Цитата Сообщение от AlexSilver Посмотреть сообщение
у тебя цикл while получается безконечный т.к значение answer нигде не изменяется после входа в цикл
почему же,я же в конце while пишу answer =Convert.ToChar(Console.Read());
или я чего то не понимаю?
0
30 / 30 / 10
Регистрация: 18.05.2011
Сообщений: 76
22.05.2011, 19:25 8
да, извини, не увидел этого... а что у тебя в tmp должно быть? сформулируй задание нормально
0
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 38
22.05.2011, 19:54  [ТС] 9
tmp это int.Мне просто напросто надо считать в консоли значение и присвоить его переменной tmp.
А вся проблема в том ,что оно заходит в цикл while,но пропускает строчку
C#
1
 tmp=Console.Read();
Но самое интересное,что когда я вывожу tmp,то оно почему то равно 13...А почему так,я вообще не понимаю...
0
39 / 39 / 8
Регистрация: 11.05.2011
Сообщений: 78
22.05.2011, 20:12 10
проблема тут
C#
1
2
Console.WriteLine("Gelaete li vy pererabotat' ESM v EGP?(y/n)");
char answer = Convert.ToChar(Console.Read());
когда ты вводишь с консоли y и нажимаешь enter ты фактически отправляешь 3 символа - символ "у", возврат каретки и перевод на новую строку. Считывается у тебя только 1-й символ (у), остальные остаются в очереди. Если после этого ты снова считаешь Console.Read() он вернет значение возврата каретки, следующий рид - значение новой строки. Т.е. тебе нужно или еще 2 раза считать Console.Read() или использовать Console.ReadLine()
C#
1
2
3
4
5
6
7
int tmp; 
Console.WriteLine("Gelaete li vy pererabotat' ESM v EGP?(y/n)");
char answer = Convert.ToChar(Console.Read());
Console.Read();
Console.Read();
if (answer == 'y')
{ .....
или
C#
1
2
3
4
5
int tmp; 
Console.WriteLine("Gelaete li vy pererabotat' ESM v EGP?(y/n)");
char answer = Convert.ToChar(Console.ReadLine());
if (answer == 'y')
{ .....
2
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 38
22.05.2011, 20:20  [ТС] 11
Dartaven,спасибо большое.Все заработало!
0
22.05.2011, 20:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.05.2011, 20:20
Помогаю со студенческими работами здесь

Создать программу по всем 3 видам циклов...цикл с параметром,цикл с условием,цикл,и цикл с предусловием...
Найти сумму чисел 1 в квадрате до 10 c квадрате...операцию возведению в степень не использовать...

Хром не открывается, модем вылетает, везде просят капчу. И вылетает синий экран
В общем, хотела найти лечение на соседнем форуме...но мой вопрос проигнорили.:( Одна надежда на...

Цикл с предусловием, цикл с постусловием и цикл с параметром
Объясните пожалуйста как делать эти циклы. У меня не получается. Можете сделать как на фото, или на...

Цикл: Вычислить значение выражения. Как вывести формулу и сделать цикл while?
Последовательно вводятся N целых чисел. Найти минимальное из них. #include&lt;stdio.h&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru