Мне нужен код, который может принимать число в качестве ввода и сообщает месяц и дату месяца в качестве вывода. Например,Как получить имя месяца от числа
ПОЛЬЗОВАТЕЛЬ вход: 33 Выход: 2 февраля
Может кто-то помочь мне понять логику этой проблемы.
Мне нужен код, который может принимать число в качестве ввода и сообщает месяц и дату месяца в качестве вывода. Например,Как получить имя месяца от числа
ПОЛЬЗОВАТЕЛЬ вход: 33 Выход: 2 февраля
Может кто-то помочь мне понять логику этой проблемы.
Вы можете использовать DateTimeFormatter
для форматирования даты и withDayOfYear(int dayOfYear)
установить 33-й день года, в следующем:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM d");
System.out.println(LocalDate.now().withDayOfYear(33).format(formatter));
или предложенный @Tunaki
System.out.println(Year.now().atDay(33).format(formatter));
Выход:
February 2
'Year.now(). AtDay (33)', более прямой. – Tunaki
@ Tunaki thx для ввода –
Alternativel y, вы могли бы принять не високосный год и использовать следующее:
package com.company;
public class Main {
public static void main(String[] args) {
String[] months = {"Jan.", "Feb.", "Mar.", "Apr.", "May", "Jun.", "Jul.", "Aug.", "Sep.", "Oct.", "Nov.", "Dec."};
int[] daysinMonth = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int n = 33; // the input value
int i = 0;
n = n % 365;
while (n > daysinMonth[i]) {
n -= daysinMonth[i];
i++;
}
System.out.println(months[i] + " " + n);
}
}
Как относится к февралю? Должен ли 33 представлять день года? – Tunaki
Первое, что вам нужно выяснить, - это то, что «33» означает «2 февраля». Определив эту логику перевода, вы можете начать писать код, который выполняет эту логику. (Примечание: существуют библиотеки даты и времени, которые, вероятно, будут * очень полезны здесь, а не написали ваши собственные. Даты * hard *.) – David
Каков результат '60'? '29 февраля 'или' Марс 1'? – Gendarme