2016-10-03 2 views
-2

숫자를 입력으로 취해 월 및 날짜를 ​​출력으로 표시 할 수있는 코드가 필요합니다. 예를 들어,숫자에서 월 이름을 얻는 방법

사용자 입력 : 33 출력 2 월 2

누군가 나에게이 문제에 대한 논리를 이해하는 데 도움이 될 수 있습니다. 다음과 같은

+0

33은 2 월과 어떤 관련이 있습니까? 33 일이 그 해를 나타낼 것입니까? – Tunaki

+0

먼저 알아야 할 사항은 "33"이 "2 월 2 일"을 의미하는 것입니다. 일단 해당 변환 논리를 정의하면 해당 논리를 수행하는 코드를 작성하기 시작할 수 있습니다. (참고 : 날짜/시간 라이브러리가 있습니다. 여기에 직접 쓰는 것이 아니라 매우 유용합니다. 날짜는 * 하드 *입니다.) – David

+2

'60 '의 출력은 무엇입니까? '2 월 29 일'또는'화성 1'? – Gendarme

답변

1

당신은 올해의 33 회 일을 설정하는 날짜와 withDayOfYear(int dayOfYear)의 형식을 DateTimeFormatter을 사용할 수 있습니다 : :

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

대체 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); 
    } 
} 
관련 문제