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

Бесконечный цикл там, где не предполагалось. Как исправить?

04.10.2018, 16:34. Показов 1573. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пытаюсь сделать что-то вроде псевдоинтернет магазина в консоли. Есть менюшка, регистрация и вход. Когда пол-ль входит уже со своими данными, показывается вторая менюшка с выбором действии (купить, в корзину..). И тут при выборе купить товар, зацикливается. Хотя есть break. В чем причина?

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Arbuz
{
    class Program
    {
        static int FirstPage()
        {
            Console.Clear();
            Console.WriteLine("1. Регистрация \n2. Вход");
 
            string menu = Console.ReadLine();
            return Convert.ToInt32(menu);
        }
 
        static int MainPage()
        {
            Console.Clear();
            Console.WriteLine("1. Купить товар \n2. Корзина \n3. Покупки \n0. Выход");
 
            string menu = Console.ReadLine();
            return Convert.ToInt32(menu);
        }
 
        static void Main(string[] args)
        {
            List<User> UserList = new List<User>();
            User user = new User();
 
            int firstPageInput = 0;
            int mainPageInput = 0;
            ConsoleKeyInfo input;
 
            do
            {
                firstPageInput = FirstPage();
                input = Console.ReadKey(true);
                switch (firstPageInput)
                {
                    case (1):
                        user.UserRegistration();
                        UserList.Add(user);
                        Console.ReadLine();
                        break;
                    case (2):
                        if (user.LogIn(UserList, user))
                        {
                            mainPageInput = MainPage();
                            MainPageSwitch();
                            break;
                        }
                        else
                        {
                            Console.WriteLine("Логин или пароль введены не правильно");
                            Console.ReadLine();             
                        }
 
                        break;
 
                }
            } while (input.Key != ConsoleKey.Escape);
 
            void MainPageSwitch()
            {
                Product product;
                List<Product> listOfSection = new List<Product>();
                listOfSection.Add(product = new Product {Section = "1. Подарки" });
                listOfSection.Add(product = new Product { Section = "2. Продукты" });
                listOfSection.Add(product = new Product { Section = "3. Детские товары" });
                listOfSection.Add(product = new Product { Section = "4. Напитки" });
                listOfSection.Add(product = new Product { Section = "5. Все для дома" });
                listOfSection.Add(product = new Product { Section = "6. Товары для животных" });
                //Product product;
 
 
                do
                {
                    switch (mainPageInput)
                    {
                        case (1):
                              foreach(var item in listOfSection)
                            {
                                Console.WriteLine(item.Section);
                            }
                            break;
 
                    }
 
                }
                while (mainPageInput != 9);
        }
 
        }
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.10.2018, 16:34
Ответы с готовыми решениями:

Бесконечный цикл ошибок, как исправить?
как исправить бесконечный цикл ошибок и при запуске сделать так, чтобы не подключалось больше 10...

Есть бесконечный цикл в программе и она поэтому занимает процессор, как это исправить?
НАписал себе напоминалку, а она жрёт процессор (~~ 45%); код упростил для понятности #include...

Исправить бесконечный цикл
Почему то тут бесконечный цикл. Не могу понять в чем проблема, visual studio попросту зависает при...

Исправить бесконечный цикл в скрипте
Программа засела в вечном цикле. Не пойму в чем может быть проблема, помогите. var nul = -1;...

4
130 / 101 / 42
Регистрация: 01.03.2018
Сообщений: 291
04.10.2018, 16:54 2
Лучший ответ Сообщение было отмечено Dika29 как решение

Решение

Цитата Сообщение от Dika29 Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
                do
                {
                    switch (mainPageInput)
                    {
                        case (1):
                              foreach(var item in listOfSection)
                            {
                                Console.WriteLine(item.Section);
                            }
                            break;
 
                    }
 
                }
                while (mainPageInput != 9);

вот тут у вас проблема
вы написали, пока mainPageInput не равен 9 будет выполняться этот блок
1
Модератор
Эксперт .NET
15466 / 10712 / 2786
Регистрация: 21.04.2018
Сообщений: 31,531
Записей в блоге: 2
05.10.2018, 00:52 3
Вы пишите об этом месте?
C#
82
83
84
85
86
87
88
89
90
91
                    switch (mainPageInput)
                    {
                        case (1):
                              foreach(var item in listOfSection)
                            {
                                Console.WriteLine(item.Section);
                            }
                            break;
 
                    }
Честно говоря, вообще, не пойму как это место у Вас работает. Переменная mainPageInput у Вас объявлена в другом методе как приватная, в этот метод она на передаётся. Вообще-то, этот код даже компилироваться не должен.
Прогоните в дебагере по значениям. Проверьте.
0
Эксперт .NET
1696 / 1325 / 316
Регистрация: 15.06.2012
Сообщений: 5,045
Записей в блоге: 3
05.10.2018, 03:58 4
могу предложить удочку вместо рыбы

https://msdn.microsoft.com/ru-... 5sadd.aspx

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Честно говоря, вообще, не пойму как это место у Вас работает.
захват переменых. Метод MainPageSwitch обьявлен внутри метода Main (относительно новая фича C#), работает как и с лямдами.
0
0 / 0 / 0
Регистрация: 08.11.2017
Сообщений: 7
05.10.2018, 08:13  [ТС] 5
Бесконечный цикл остановить получилось. А как теперь вернуться назад? Вот с этого места на MainPage. Около хожу, что-то не могу попасть
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
do
                {
                    inputFirst = Console.ReadKey(true);
                    inputMain = Console.ReadKey(true);
                    switch (mainPageInput)
                    {
                        case (1):
                            Console.Clear();
                            foreach (var item in listOfSection)
                            {
                                Console.WriteLine(item.Section);         
                            }
                            Console.WriteLine("Назад (Q)");
                            if(inputMain.Key == ConsoleKey.Q)
                            {
                                
                            }
                            break;
 
                    }
 
                }
                while (inputFirst.Key != ConsoleKey.Escape);
0
05.10.2018, 08:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.10.2018, 08:13
Помогаю со студенческими работами здесь

Бесконечный цикл немогу исправить
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; #define N 10 int main() { double...

Бесконечный цикл: найти и исправить ошибку в коде
Есть такой код, если вводишь цифру меньше 4 или больше 40 всё хорошо, он просто очищает консоль и...

Найти и исправить ошибки в коде (программа уходит в бесконечный цикл)
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; int main() { int n,k,s; float...

такая проблема: дома 2 компъютера , один с Windows Vista, другой с Windows XP. Там, где Vista - интернет работает как часы, а там, где ХР - интернета
Здравствуйте, у меня такая проблема: дома 2 компъютера , один с Windows Vista, другой с Windows XP....


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

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