2016-10-03 3 views
-2

Мне нужен код, который может принимать число в качестве ввода и сообщает месяц и дату месяца в качестве вывода. Например,Как получить имя месяца от числа

ПОЛЬЗОВАТЕЛЬ вход: 33 Выход: 2 февраля

Может кто-то помочь мне понять логику этой проблемы.

+0

Как относится к февралю? Должен ли 33 представлять день года? – Tunaki

+0

Первое, что вам нужно выяснить, - это то, что «33» означает «2 февраля». Определив эту логику перевода, вы можете начать писать код, который выполняет эту логику. (Примечание: существуют библиотеки даты и времени, которые, вероятно, будут * очень полезны здесь, а не написали ваши собственные. Даты * hard *.) – David

+2

Каков результат '60'? '29 февраля 'или' Марс 1'? – Gendarme

ответ

1

Вы можете использовать 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 
+3

'Year.now(). AtDay (33)', более прямой. – Tunaki

+0

@ Tunaki thx для ввода –

0

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); 
    } 
} 
Смежные вопросы