0

私は、1 から 365 までの整数を受け入れ、月と日付を与えることができる電卓を作成するための以前の提案に取り組んでいる新しい Java プログラマーです。各月を個別の変数として解決する方法がわかりません。完全に立ち往生。どんな助けでも大歓迎です。

import java.util.Scanner;

public class principal {
    public static void maxn(String[] args) {
        Scanner input = new Scanner(System.in);

        int x = 0;
        int date;
        if (x < 30) {
            month = "January";
            date = x;
            System.out.println(month + " " + day);
        } else
            x += 31;
        if (31 < x < 58){
            String month = "February";
            day -= x;        

        if (31 < x < 58 < 89) {
            month = "March"
            day -= x;

            if (31 < x < 58 < 89 < 120) {
                month = "April"
                day -= x;

                if (31 < x < 58 < 89 < 120 < 150) ;
                {
                    month = "May"
                    day -= x;

                    if (31 < x < 58 < 89 < 120 < 150 < 180) ;
                    {
                        month = "June"
                        day -= x;

                        if (31 < x < 58 < 89 < 120 < 150 < 180 < 211) {
                            month = "July"
                            day -= x;

                            if (31 < x < 58 < 89 < 120 < 150 < 180 < 211 < 242) {
                                month = "August"
                                day -= x;

                                if (31 < x < 58 < 89 < 120 < 150 < 180 < 211 < 242 < 273) {
                                    month = "September" day -= x;

                                    if (31 < x < 58 < 89 < 120 < 150 < 180 < 211 < 242 < 273 < 303) {
                                        month = "October" day -= x;

                                        if (31 < x < 58 < 89 < 120 < 150 < 180 < 211 < 242 < 273 < 303 < 334) {
                                            month = "November"
                                            day -= x;

                                            if (31 < x < 58 < 89 < 120 < 150 < 180 < 211 < 242 < 273 < 303 < 365) {
                                                month = "December"
                                                day -= x;
                                            }


                                        }
                                    }
                                }
4

2 に答える 2

0

あなたが望むことを行うための2つの完全に別々の方法があります。1 つ目は現在の年 (閏年) を想定しており、2 つ目は閏年ではないと仮定しています。

public static void main(String[] args) throws IOException
{
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  String line = br.readLine();
  while (!line.isEmpty())
  {
     int i = Integer.parseInt(line);

     // way 1
     Calendar c = Calendar.getInstance();
     c.set(Calendar.DAY_OF_YEAR, i);
     System.out.println(c.get(Calendar.DAY_OF_MONTH) + " " +
                        DateFormatSymbols.getInstance().getMonths()[c.get(Calendar.MONTH)]);

     // way 2
     String[] months = {"JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"};
     int[] days = {31,28,31,30,31,30,31,31,30,31,30,31};
     int j = 0;
     while (i > days[j])
        i -= days[j++];
     System.out.println(i + " " + months[j]);

     line = br.readLine();
  }
}
于 2013-02-11T19:15:43.747 に答える
0

あなたの質問について私が理解していることから、あなたは次のようなものが欲しいでしょう:

int yourInt = 325; // YOUR NUMBER HERE, BETWEEN 1 and 365
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2013);  //depending on the year you want
cal.set(Calendar.DAY_OF_YEAR, yourInt);

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
    Date myDate = sdf.parse(sdf.format(cal.getTime()));
    System.out.println("date : " + myDate.toString());
    System.out.println("month : " + (cal.get(Calendar.MONTH) + 1)); //+1 because January is 0
    System.out.println("day of month : " + cal.get(Calendar.DAY_OF_MONTH));
} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

もちろん、年を変更すると、得られる値が変わります。

整数として 325 を使用すると、次の出力が得られます。

月 : 11
日 : 21
日付 : 2013 年 11 月 21 日木曜日 14:12:57 EST 2013

于 2013-02-11T19:10:18.193 に答える