Почему цикл do while вызывает бесконечный цикл? - PullRequest
0 голосов
/ 12 января 2019

У меня есть этот код, который будет изменять текстовый файл в зависимости от того, что пользователь вводит. Цикл do while, который проверяет, не вызывает ли choiceBack == 1 бесконечный цикл. Тем не менее, цикл, который проверяет, является ли idCheck не истиной, вызывает бесконечный цикл. Почему так?

bool idCheck = customerList.Where(m => m.iID.Contains(cC.iID)).Any();

do
{
    if (idCheck == true)
    { 
        (Chunk of code)

        Console.Write("User updated!");
        int choiceBack2 = 0;
        do
        {
            Console.WriteLine();
            Console.WriteLine("1) Go Back");
            choiceBack2 = Convert.ToInt32(Console.ReadLine());


            if (choiceBack2 == 1)
            {
                baristaLoggedIn();
            }

            else
            {
                Console.WriteLine("Wrong option!");
            }
        } while (choiceBack2 != 1);
    }
    else
    {
        Console.Write("username doesn't exist ");
        Console.WriteLine();
        Console.Write("Enter ID: ");
    }
} while (idCheck != true);

Ответы [ 3 ]

0 голосов
/ 12 января 2019

Однажды IdCheck == true попадет в бесконечный цикл. Потому что вы никогда не меняете IdCheck в своем if утверждении if(IdCheck == true). Таким образом, ваш самый высокий уровень do while фактически делает цикл бесконечным. В какой-то момент вам нужно изменить IdCheck на false или удалить это do while в зависимости от того, чего вы хотите достичь

0 голосов
/ 17 января 2019

Вам нужно разорвать цикл в вашем операторе else - «Неправильный вариант». Вы можете сломать его, указав "idCheck = false" в операторе else.

0 голосов
/ 12 января 2019

Почему следующий цикл работает неистово?

var idCheck = false;

do
{
} while (!idCheck)

Вы видите это сейчас?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...