1.switch后面允许有哪些类型?
byte、short、char、int、enum、String
JDK1.5后允许有enum枚举类型。
JDK1.8后允许有String类型。
2.Switch case语句格式:
switch(变量){
case 变量值1:
//;
break;
case 变量值2:
//...;
break;
...
case default:
//...;
break;
}
3.switch case执行时,一定会先进行匹配,匹配成功返回当前case的值,再根据是否有break,判断是否继续输出,或是跳出判断。
4.程序结果:
5.代码如下:
import java.util.Scanner;
public class ClacDay {
public static void main(String[] args) {
//1.获取控制台输入的年月日
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年份:");
int year = scanner.nextInt();
System.out.println("请输入月份:");
int month = scanner.nextInt();
System.out.println("请输入日期:");
int day = scanner.nextInt();
//2.计算二月份的天数
//int daysofFeb = calcfebDays(year);
//3.使用Switch case累加天数
int sum = 0;
switch (month) {
case 12:sum += 30;
case 11:sum += 31;
case 10:sum += 30;
case 9: sum += 31;
case 8: sum += 31;
case 7: sum += 30;
case 6: sum += 31;
case 5: sum += 30;
case 4: sum += 31;
case 3: sum += calcfebDays(year);
case 2: sum += 31;
case 1: sum += day;
default:
break;
}
System.out.println(year+"年"+month+"月"+day+"日");
System.out.println("是"+year+"年的第"+sum+"天!");
}
//能够被4整除并不能被100整除,或能够被400整除来计算是否为闰年
public static int calcfebDays(int year) {
//判断二月份是否为闰年,使用三目运算符
return year % 4 ==0 && year % 100 !=0 || year % 400 ==0 ? 29 : 28;
}
public static int calcfebDays2(int year) {
//使用if判断语句
if(year % 4 ==0 && year % 100 !=0 || year % 400 ==0) {
return 29;
}
return 28;
}
}
6.还需注意的是当进行case判断时,JVM会自动从上到下扫描,寻找匹配的case,case后面只能是常量,可以是运算表达式,但一定要符合正确的类型。不能是变量,即便变量在之前进行了赋值,JVM依然会报错。