java .time
В то время как другие ответили на часть о двух десятичных знаках, вот способ напечатать текущий месяц с названием месяца.
DateTimeFormatter monthFormatter = DateTimeFormatter.ofPattern("MMMM/uuuu", Locale.ENGLISH);
YearMonth thisMonth = YearMonth.now(ZoneId.of("Australia/Hobart"));
String formattedMonth = thisMonth.format(monthFormatter);
System.out.println("How many sedans have you sold in " + formattedMonth + "?");
Когда я запустил код сегодня, результат был:
Сколько седанов вы продали в марте / 2020?
(надеюсь, их было не так много, мир нуждается в нас, чтобы вести меньше.) Укажите желаемый часовой пояс, в который я поместил Австралию / Хобарт, поскольку месяц не меняется одновременно во всех часовых поясах.
В коде MMMM/uuuu
- шаблон формата строка . MMMM
означает, что нам нужно полное название месяца (без аббревиатуры), а uuuu
- это год (в случае текущего года вы можете использовать uuuu
и yyyy
взаимозаменяемо). И Locale.ENGLISH
- это язык, на котором мы хотим название месяца. Java знает названия месяцев на любом языке.
Я использую и рекомендую java .time, современный Java API даты и времени. Класс Calendar
, который вы использовали, и даже класс SimpleDateFormat
, который вы импортировали, плохо спроектированы и давно устарели. Нет никаких причин, по которым мы должны бороться с этими в 2020 году.
Исправление l oop
Наконец, когда я вводю Y / y в конце в l oop, он повторяет только предыдущий вывод и не возвращает l oop в начало.
Вам нужно поместить 8 строк из System.out.println("Please enter your name.");
внутри l oop, то есть после линия do{
. После того, как вы попробовали это, я думаю, вы поймете, почему это решает проблему.
Ссылка
Oracle учебник: Дата Время объяснение, как использовать java .time.