Switch分支
语法结构:
s w i t c h ( 表 达 式 ) { c a s e 值 1 : 语 句 序 列 1 ; b r a e k ; c a s e 值 2 : 语 句 序 列 2 ; b r e a k ; . . . . ; d e f a u l t : 默 认 语 句 } switch(表达式){case 值1:语句序列1;braek;case 值2:语句序列2;break;....;default:默认语句} switch(表达式){case值1:语句序列1;braek;case值2:语句序列2;break;....;default:默认语句}
switch后面是一个(),()中表达式返回的结果是一个等值,这个等值的类型可以为:int,byte,short,char,String,枚举类型。
这个()中的等值会依次跟case后面的值进行比较,如果匹配成功,就执行后面的代码
为了防止代码的穿透效果:在每个分支的后面加上一个关键词break,遇到break这个分支就结束了
类似else的“兜底”的分支:default分支。default分支可以写在任意的位置上,但是如果没有在最后一行,后面必须加上break关键字,如果在最后一行的话,break可以省略
相邻分支逻辑是一样的,那么就可以只保留最后一个分支,上面的都可以省去不写了
switch分支和if分支的区别:表达式是等值判断的话 → if,switch都可以。如果表达式是区间判断的情况→if最好
switch应用场合:就是等值判断,等值的情况比较少的情况下
流程图:
代码案例:
import java.util.Scanner;
public class Test04 {
public static void main(String[] args) {
/*
实现一个功能:
根据给出的分数,判断学生的等级:
>=90--A
>=80--B
>=70--C
>=60--D
<60--E
*/
//1.给出学生的分数
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生的成绩:");
int score = sc.nextInt();
//2.根据学生的成绩来判断等级:
switch (score / 10) {
case 10:
System.out.println("A");
break;
case 9:
System.out.println("B");
break;
case 8:
System.out.println("C");
break;
case 7:
System.out.println("D");
break;
case 6:
System.out.println("E");
break;
case 5:
System.out.println("F");
break;
case 4:
System.out.println("G");
break;
case 3:
System.out.println("H");
break;
case 2:
System.out.println("I");
break;
case 1:
System.out.println("J");
break;
case 0:
System.out.println("S");
break;
default:
System.out.println("您输入的成绩有误,请重新输入");
}
}
}