1.选择语句-Switch语句
结构:switch(int或String类型的字面值或变量){//int或String类型的字面值或变量,和下面
case 里的int或String类型的字面值或变量进行匹配,若都匹配不上则进行default
case int或String类型的字面值或变量;
java语句;
java语句;
...
break;//终止
case int或String类型的字面值或变量;
java语句;
java语句;
...
break;
...
default;
java语句;
...
}
执行原理:Switch后面小括号当中的数据和case后面的数据进行一一匹配,匹配成功的
分支执行,按照自上而下的顺序依次执行,若分支中没有break语句的话,直接进入下一个
分支执行不进行匹配,这种现象称为case穿透现象
若所有分支都没有匹配成功,当有default的话,会执行default分支当中的程序
Switch后面和case后面只能是int和String类型,当然byte,short,char也可以直接写到
switch和case后面,因为他们可以自动进行类型转换,byte,short,char可以自动转换成int
类型。 JDK6的switch和case后面只能是int类型
JDK7之后的包括7,引入新特性,switch和case关键字之后可以探测int和String类型
的数据。
case可以合并
int i=10;
switch(i){
case 1:case 2:case 3:case 10:
System.out.printIn("Test Code");
}
例子:
//完整的switch语句
//接受用户的输入
//1 表示星期一
//2 表示星期二
...
//7 表示星期日
public class SwitchTest01{
public static void main(Sring[] args){
java.util.Scanner s=new java.util.Scanner(System.in);
System.out.printIn("请输入数字:");
int num= s.nextInt();
switch(num){
case 1:
System.out.printIn("星期一");
break;
case 2:
System.out.printIn("星期二");
break;
case 3:
System.out.printIn("星期三");
break;
case 4:
System.out.printIn("星期四");
break;
case 5:
System.out.printIn("星期五");
break;
case 6:
System.out.printIn("星期六");
break;
case 7:
System.out.printIn("星期日");
break;
default:
System.out.printIn("对不起您输入的数字非法");
}
}
}
switch(int类型、String类型) int类型:case 1: String类型:case "星期一":
char类型:case 'A':
例:实现计算器当中的+、-、*、/...
public class SwitchTest04{
publlic static void main(String[] args){
java.util.Scanner s=new java.util.Scanner(System.in);
System.out.printIn("欢迎使用本系统:");
System.out.print("请输入第一个数字:");
int num1 =s.nextInt();
System.out.print("请输入一个运算符:");
String operator =s.next();
System.out.print("请输入第二个数字:");
int num2 =s.nextInt();
int result =0;
switch(operator){
case "+":
result=num1+num2;
break;
case "-":
result=num1-num2;
break;
case "*":
result=num1*num2;
break;
case "/":
result=num1/num2;
break;
case "%":
result=num1%num2;
break;
defult:
System.out.printIn("该系统不支持这种运算");
}
System.out.printIn("运算结果为:" + num1 + operator + num2 + "=" +result);
}
}
例:假设给考生成绩,判断考生成绩等级,采用switch语句完成,不能使用if
成绩有效范围【0-100】
考试成绩可能带有小数
成绩和等级对照:
[90-100] A
[80-90] B
[70-80] C
[60-70] D
[0-60] E
public class SwitchTest04{
publlic static void main(String[] args){
//考生成绩
double score =90.5;
//转换成int类型
int grade =(int)(score/10);
switch(grade){
case 9:case 10:
System.out.printIn("A");
break;
case 8:
System.out.printIn("B");
break;
case 7:
System.out.printIn("C");
case 6:
System.out.printIn("D");
break;
default:
System.out.printIn("E");
}
}