Мне трудно понять, что это такое! в этом цикле while. Я знаю, что это инвертирует логическое значение, но как это приводит к выходу из цикла? Если оно ложно, то оно превращает его в истинное, а если оно истинно, то оно превращает его в ложное?
String userChoice;
do
{
userChoice = select.promptChoice();
} while ( !select.isValidChoice(action ) );