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