Как мне выйти из цикла while с помощью переключателя? [Дубликат]

0

Я пытаюсь выйти из цикла while в инструкции switch, но он не работает. Я получаю бесконечный цикл. Зачем?

int main()
{
    int n;
    while (std::cin >> n)
    {
         switch (n)
         {
         case 4:
             break;
             break;
         default:
             std::cout << "Incorrect";
             break;
         }
    }
}
Теги:

2 ответа

4
Лучший ответ

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

while (std::cin >> n)
{
    bool should_continue = true;
    switch (n)
    {
    case 4:
        should_continue = false;
        break;
    default:
        std::cout << "Incorrect";
        break;
    }
    if (!should_continue)
        break;
}
1

break в switch прерывает переключатель. Сделайте что-нибудь вроде:

while (std::cin >> n)
{
     if(n == 4)
         break;
     switch (n)
     {
     //...Other case labels
    default:
         std::cout << "Incorrect";
         break;
     }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню