Невозможно выйти из цикла, потому что userChoice
всегда равно всегда либо "не 1", либо "не 2" (это не может быть и то и другое!).
Таким образом, поскольку continue
просто всегда будет переходить к другой итерации, а поскольку break
выбрасывает вас из switch
(не цикла), ваш цикл никогда не может закончиться, и cout
никогда не будет выполнен.
Мне кажется, что вы хотите повторять только до тех пор, пока userChoice
не равно 1 и это также не 2:
while(userChoice!=1 && userChoice!=2);
Это иногдавводит в заблуждение новичков, которые используют ярлыки на английском языке, такие как «userChoice is not 1 или 2», когда они действительно означают «userChoice не является ни 1, ни 2» и не понимают, что C ++ вообще не имеет конструкции «ни / ни», так что конецвплоть до написания «userChoice не равно 1 или userChoice не равно 2» по ошибке, не продумав это до конца.
Поскольку позитивы более интуитивны, чем негативы, один из способов прояснить это для себя - это применить закон де Моргана;Ваш фиксированный код эквивалентен:
while(!(userChoice == 1 || userChoice == 2));
, т. е. «цикл, пока он , а не , в случае, если userChoice равен 1 или 2».Это, возможно, худший код, но он может помочь вашему пониманию кратко написать его таким образом.