楼上正解,不过楼主问出这个问题可能也是初学者,我就提供一下用简单语法的代码吧
公司主营业务:网站制作、成都做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出宣化免费做网站回馈大家。
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入年份");
int year= scan.nextInt();//得到需求年份
System.out.println("请输入月份");
int month=scan.nextInt();//得到需求月份
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println(year+"年"+month+"月的天数为:"+31);
break;
case 4:
case 6:
case 9:
case 11:
System.out.println(year+"年"+month+"月的天数为:"+30);
case 2:
if((year%400)==0 || ((year%4)==0)((year%100)!=0)){
System.out.println(year+"年2月的天数为:"+29);
}else{
System.out.println(year+"年2月的天数为:"+28);
}
}
}
import java.util.*;
/**
*
* 这里没有对输入非数字的数进行处理!
*/
public class Shell {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int y = 0;
int n = 0;
//输入年份,用于判断闰年!
System.out.println("请输入年份:");
y = sc.nextInt();
System.out.println("请输入月份:");
n = sc.nextInt();
switch (n) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println(n + "月份有:31天");
break;
//对于2月份需要判断是否为闰年
case 2:
if ((y % 4 == 0 y % 100 != 0) || (y % 400 == 0)) {
System.out.println(n + "月份有:29天");
break;
} else {
System.out.println(n + "月份有:28天");
break;
}
case 4:
case 6:
case 9:
case 11:
System.out.println(n + "月份有:30天");
break;
default:
System.out.println("请输入正确的年份和月份");
break;
}
}
}
这个题目的逻辑比较简单,先用数组记录出一年12个月每个月的天数,其中2月记录为28天,在判断当年是否是闰年,如果是闰年,将2月天数记录为29天,然后输入,例如数组month,输出month[m - 1],这就是这个月的天数了。
import java.util.*;
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入年份");
int year = input.nextInt();
System.out.println("请输入月份");
int month = input.nextInt();
if(month==2){
if (((year % 100 == 0) (year % 400 == 0))
|| ((year % 100 != 0) (year % 4 == 0))) {
System.out.println(month+"月份天数是29天");
return;
}else {
System.out.println(month+"月份天数是28天");
return;
}
}else if(month%2==0 ) {
System.out.println(month+"月份是30天");
}else if(month%2!=0) {
System.out.println(month+"月份是31天");
}
}
}
按照你的要求,如何得到一个月有多少天,这里并没有说是什么年份,所以默认当年(不同年份的月份天数可能不一样,例如闰年的二月)
因此问题变为
输入条件:指定某一个月
输出结果:当年这个月份的天数
思路:在Java8里新的时间API里,月份已经被抽象成了枚举Month,所以可以把输入条件定义为枚举类型的Month,然后获取当前时间X,把时间X的月份修改为输入条件的月份,此时时间X变为X1,根据本身提供的方法lengthOfMonth就可以直接得到X1所在当月的天数了
代码:(请将JDK升到8)
public static void main(String[] args) {
System.out.println(countDaysInMonth(Month.MAY));
}
public static int countDaysInMonth(Month month){
// 获取当前时间
LocalDate now = LocalDate.now();
System.out.println(now);
// 把当前时间的月份修改为输入的月份
LocalDate thisMonthDate = now.withMonth(month.getValue());
System.out.println(thisMonthDate);
return thisMonthDate.lengthOfMonth();
}
也可以连着写,更美观点
public static int countDaysInMonth(Month month){
return LocalDate.now()
.withMonth(month.getValue())
.lengthOfMonth();
}
非常直观且易懂好用,在Java8里with就代表着修改意思,withMonth那就是修改月份,所以整个代码读下来就变成
获取当前时间A
修改A的月份为输入条件得到时间B
计算B所在月的天数
代码实现如下:
package test01;
import java.util.Calendar;
/**
*
* @author 码灵
* 20170905
*
*/
public class GetDay {
public static void main(String[] args) {
int currentMaxDays = getCurrentMonthDay();
int maxDaysByDate = getDaysByYearMonth(2017, 9);
System.out.println("本月天数:" + currentMaxDays);
System.out.println("2017年9月天数:" + maxDaysByDate);
}
/**
* 获取当月的 天数
*/
public static int getCurrentMonthDay() {
Calendar a = Calendar.getInstance();
a.set(Calendar.DATE, 1);
a.roll(Calendar.DATE, -1);
int maxDate = a.get(Calendar.DATE);
return maxDate;
}
/**
* 根据年 月 获取对应的月份 天数
*/
public static int getDaysByYearMonth(int year, int month) {
Calendar a = Calendar.getInstance();
a.set(Calendar.YEAR, year);
a.set(Calendar.MONTH, month - 1);
a.set(Calendar.DATE, 1);
a.roll(Calendar.DATE, -1);
int maxDate = a.get(Calendar.DATE);
return maxDate;
}
}