Java判断闰年的两种方法
前言
闰年输出表达式多种多样,本文章介绍两种。普通版和进阶版。
编程软件IDEA jdk16.0.2
提示:以下是本篇文章正文内容,下面案例可供参考
一、普通版输出——简单的Switch循环语句
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);//获取系统时间
int year;
int month;
int days;
System.out.println("请输入年:");
year=sc.nextInt();//键入年份
System.out.println();
System.out.println("请输入月:");
month=sc.nextInt();//键入月份
switch (month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days=31;
break;
case 4:
case 6:
case 9:
case 11:
days=30;
break;
case 2:
days=year%400==0||year%4==0&&year%100!=0?29:28;//方法一:判断某年2月份多少天,闰年表达式的核心
//LocalDate now=LocalDate.of(year,month,1);//方法二
days=now.isLeapYear()?29:28;
break;
default:
days=0;
break;
}
System.out.printf("%d年%d月有%d天",year,month,days);
}
输出结果:闰年
非闰年
此方法是简单Switch语句循环,当语句运行至break后循环跳出。代码标注的两种求闰年的核心表达式,不会的小伙伴可以重点记一下。
二、进阶版输出——表达式输出
表达式输出是jdk12版本后出现的输出方法。
代码如下(示例):
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int year;
int month;
System.out.println("请输入年:");
year=sc.nextInt();
System.out.println();
System.out.println("请输入月:");
month=sc.nextInt();
int days=switch (month){
case 2->year%400==0||year%4==0&&year%100!=0?29:28;
case 4,6,9,11->30;
default -> 31;
};
System.out.printf("%d年%d月有%d天",year,month,days);
}
此方法:是把switch中间的值返回给days,从而获取days得值。且注意必须有defult,我们可以直观的看到程序中没有了break语句,故不能及时运行跳出,当输入值没有时,defult可以及时的终止程序运行。理解困难,代码简洁,入门易懂。
**输出结果:
闰年
非闰年