4

ユーザーが1か月に1〜12の数値を入力した場合、ユーザーが入力したその月の最大日数を出力するように、以下のコードを変更するにはどうすればよいですか。

import java.util.*;

public class LastDay {
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);       
    GregorianCalendar cal = new GregorianCalendar();

    int myMonth;

    System.out.println("Enter the month number (1-12): ");
    myMonth = scanner.nextInt();

    System.out.println("Maximum number of days is: " + Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_MONTH));     
}

}

現時点では、現在の月(3月)の最大日数が出力されます。ユーザーが入力したmyMonth値に対して実行したいと思います。

4

6 に答える 6

3

現時点では、現在の月(3月)の最大日数が出力されます。

Calendar.getInstance()現在の時刻、つまり現在の月を返します。あなたがすべき:

 Calendar calendar = Calendar.getInstance();
 calendar.set(Calendar.MONTH, myMonth - 1);
 int actualMax = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
于 2013-03-27T13:28:11.470 に答える
1

新しいCalendarオブジェクトを作成し、その月をユーザーが入力した値に設定します(Calendarでは月が0から始まるため)。

次に、そのカレンダーのActualMaximumを取得します

于 2013-03-27T13:29:07.077 に答える
1

答えは、前の2つの答えの組み合わせのようなものです。

たとえば、2月の最大日数を取得するには、myMonthは2に等しくなります。

public static void main(String[] args){
    int myMonth = 2;
    Calendar c = Calendar.getInstance();
    c.set(Calendar.MONTH, myMonth - 1);
    System.out.println(c.getActualMaximum(Calendar.DAY_OF_MONTH));
}
于 2013-03-27T13:32:00.407 に答える
1

Yoda timeを使用している場合は、さらに簡単です。

DateTime last = new DateTime().
                withMonthOfYear(myMonth).
                dayOfMonth().withMaximumValue();
于 2013-03-27T13:32:59.370 に答える
1

前月を設定する必要があります。

GregorianCalendar cal = new GregorianCalendar();
cal.set(Calendar.MONTH, myMonth - 1);

System.out.println("Maximum number of days is: " + cal.getActualMaximum(Calendar.DAY_OF_MONTH));
于 2013-03-27T13:35:23.367 に答える
1
   import java.util.*;

   public class LastDay {

       public static void main(String[] args) {
      Scanner scanner = new Scanner(System.in);       
      GregorianCalendar cal = new GregorianCalendar();

      int myMonth;

      System.out.println("Enter the month number (1-12): ");
      myMonth = scanner.nextInt();

      Calendar calendar = Calendar.getInstance();   
      calendar.set(Calendar.YEAR, myMonth-1, Calendar.DATE);

      System.out.println("Maximum number of days is: " + calendar.getActualMaximum(Calendar.DAY_OF_MONTH));     
}

}

于 2013-03-27T13:48:39.237 に答える