switch分支语句
switch语句也称为分支语句,其和if语句有点类似,都是用来判断值是否相等,但switch默认只支持byte、short、int、char这四种类型的比较,JDK8中也允许String类型的变量做对比。
语法:
switch (表达式) { //表达式可以为byte、short、int、char,JDK5加入枚举,JDK7加入String
case 值1: //分支入口
语句体1;
break;
case 值2: //分支入口
语句体2;
break;
...
default:
语句体n+1;
break;
}
//后续语句
格式说明:
执行流程:
基础案例:
从键盘录入mode值,其值为0 1 2 3中任意一个,然后输出相应字符串
package com.briup.chap03;
import java.util.Scanner;
public class Test023_SwitchBasic {
//从键盘录入mode值,其值为0 1 2 3中任意一个,然后输出相应字符串
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("input a mode(0 1 2 3): ");
int mode = sc.nextInt();
switch(mode){
case 0:
System.out.println("默认模式开启");
//注意讲解break用法:结束switch语句
//break;
case 1:
System.out.println("1模式开启");
break;
case 2:
System.out.println("2模式开启");
break;
case 3:
System.out.println("3模式开启");
break;
default:
System.out.println("无效录入");
//break;
}
System.out.println("out of switch!");
}
}
扩展案例:
从键盘录入一个年份和月份,然后输出该月份的天数
package com.briup.chap03;
import java.util.Scanner;
public class Test023_Extend {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请录入年份和月份: ");
int year = sc.nextInt();
int month = sc.nextInt();
switch(month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println("31天");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println("30天");
break;
case 2:
//闰年判断
if((year % 400 == 0) ||
(year % 4 == 0 && year % 100 != 0)) {
System.out.println("29天");
}else {
System.out.println("28天");
}
break;
default:
System.out.println("录入月份有误!");
break;
}
System.out.println("out of switch!");
}
}