4

如果用户输入一个月的数值 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));     
}

}

目前它输出我们目前(三月)所在月份的最大天数。我希望它为用户输入的 myMonth 值执行此操作。

4

6 回答 6

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

如果你使用尤达时间它更简单:

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

创建一个新的日历对象并将其月份设置为用户输入的值 -1(因为月份在日历中以 0 开头。)

然后获取该日历的 ActualMaximum

于 2013-03-27T13:29:07.077 回答
1

答案更像是前两个答案的组合。

例如,要获得二月的最大天数,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

您必须设置前一个月:

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 回答