switch 的用法:
一个比较完整的switch语句:
switch(int 或 string类型的字面值或变量){
case int 或 string类型的字面值或变量:
java语句;
break;
case int 或 string类型的字面值或变量:
java语句;
break;
case int 或 string类型的字面值或变量:
java语句;
break;
…
default:
java语句;
…
}
执行原理:switch后面小括号当中的“数据”和case后面的“数据”进行一一匹配(按照自上而下的顺序),匹配成功的分支执行,若分支当中最后又break语句的话,整个switch语句终止;若没有break语句,直接进入下一个分支执行(不用再匹配)【case穿透现象】。若所有语句都没有匹配成功,当有default语句的话,会执行此分支当中的程序。
注意:switch后面和case后面只能是int或者string类型的数据,不能是探测其他类型。当然byte,short,char直接写到其后,因为他们可以进行自动类型转换。
*case可以合并:
int i = 10;
switch(i){
case1: case2: case3: case10:
System.out.println(“Test code!”);
}
下面为switch 的两个示例:
例1:简单计算器
实现思路:
实现简单的加减乘除取模运算
package java核心技术;
import java.util.Scanner;
public class SwitchTest01 {
public static void main(String [] args) {
Scanner in = new Scanner(System.in);
System.out.println("欢迎使用简单计算机系统:");
System.out.println("请输入第一个数字:");
int a = in.nextInt();
System.out.println("请输入运算符:");
String b = in.next();
System.out.println("请输入第二个数字:");
int c = in.nextInt();
switch(b) {
case"+":
System.out.println(a + "+" + c+ "=" + (a+c));
break;
case"-":
System.out.println(a + "-" + c+ "=" + (a-c));
break;
case"*":
System.out.println(a + "*" + c + "=" + (a*c));
break;
case"/":
System.out.println(a + "/" + c + "=" + (a/c));
break;
case"%":
System.out.println(a + "%" + c + "=" + (a%c));
break;
default:
System.out.println("您输入有误!请重新输入:");
break;
}
}
}
例2:判断成绩等级
有效成绩范围:[0-100]
考试成绩可能带有小数
考试成绩可等级之间的对照关系:
[90-100] A
[80-90] B
[70-80] C
[60-70] D
[0-60] E
package java核心技术;
import java.util.Scanner;
public class SwitchTest02 {
public static void main(String [] args) {
Scanner in = new Scanner(System.in);
//考生成绩
double score = in.nextDouble();
//转换成int
int grade = (int )(score/10);
switch(grade) {
case 9: case 10:
System.out.println("A");
break;
case 8:
System.out.println("B");
break;
case 7:
System.out.println("C");
break;
case 6:
System.out.println("D");
break;
default:
System.out.println("E");
}
}
}