Не уверен, если вы скопировали код для быстрого доступа, но сокращенное ifs делает только одну строку, вам понадобятся фигурные скобки {} для 2. этой части
if (year == 4)
System.out.printf("Go to www.bernardine.com/jewelry-anniv.htm#traditional for more gift choices.");
cont = 'N';
Следовательно, cont всегда равен N до этогоцикл, поэтому он никогда не вводится. Это, вероятно, то, что вас заводит, остальное - это просто я делаю критический анализ кода на самом деле.
Вы можете также рассмотреть 'Y'.equals (cont.touppercase ()), чтобы избежать исключений нулевого указателя, когда cont равен нулю, хотя я думаю,ваша фабрика персонажей может увернуться, что это хорошая привычка - сначала делать константы.
может также использовать do while вместо этого, так что она всегда вводит то, что нужно захватить input.nextline () перед оценкой, если это Y, и принятием решенияпродолжайте.
Если вы хотите, чтобы в конце снова был введен весь метод, изучите рекурсию. Вам может потребоваться сделать уровень класса переменной cont или разбить его на другой метод с аргументом cont;не забудьте иметь условие выхода, если вы идете по этому маршруту.