JAVA - 如何计算用户输入的一个月的最后一天

时间:2013-03-27 13:25:40

标签: java

如果用户输入一个月的数字值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值执行此操作。

6 个答案:

答案 0 :(得分:3)

  

目前它输出我们目前(3月)的最大月数。

Calendar.getInstance()返回当前时间,即当前月份。你应该:

 Calendar calendar = Calendar.getInstance();
 calendar.set(Calendar.MONTH, myMonth - 1);
 int actualMax = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

答案 1 :(得分:1)

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

然后获取该日历的ActualMaximum

答案 2 :(得分:1)

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

例如,要获得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));
}

答案 3 :(得分:1)

如果您使用Yoda时间更简单:

DateTime last = new DateTime().
                withMonthOfYear(myMonth).
                dayOfMonth().withMaximumValue();

答案 4 :(得分: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));

答案 5 :(得分: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));     
}

}