2016-10-03 7 views
-2

数値を入力として取り、月と日付を出力として出力するコードが必要です。例えば、数字から月の名前を取得する方法

ユーザー入力:33 出力:2月2日

は、誰かが私はこの問題にロジックを理解するのに役立ちます。次のよう

+0

33は2月にどのように関連しますか? 33はその年の日を表していますか? – Tunaki

+0

最初に知る必要があるのは、「33」が「2月2日」を意味する方法です。その変換ロジックを定義すると、そのロジックを実行するコードの作成を開始できます。 (注:日付/時刻ライブラリがあります。おそらくあなた自身ではなく、非常に役に立つでしょう。日付は* hard *です。) – 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); 
    } 
} 
関連する問題