while( !answer.equalsIgnoreCase("y") || !answer.equalsIgnoreCase("n"));
Проблема возникает из-за того, что цикл do-while проверяет оба условия с помощью оператора OR.
Подумайте об этом так, если «Ответ» равен «Y», что условие нарушено, но условие ИЛИ «N» все еще активно, поэтому цикл будет продолжен.
Функция do while проверяет только одно из вышеприведенных условий на ложность перед продолжением цикла.
Чтобы исправить это, замените ||
на &&
, и цикл прервется, есливводится либо Y, либо N, поскольку цикл будет продолжаться, только если оба условия ложны.