关于switch语句:
1.switch语句也属于选择结构,也是分支语句
2.switch语句的语法结构:
一个比较完整的switch语句应该也是这样编写:
switch(int或String类型的字面值变量){
case int或String类型的字面值变量 :
java语句;
…
//break; //如若没有break的话,最上面的那个不会跟这个进行匹配
case int或String类型的字面值变量 :
java语句;
java语句;
java语句;
java语句;
…//
break;
case int或String类型的字面值变量 :
java语句;
java语句;
java语句;
java语句;
…
break;
…
default :
java语句
…
}
3.switch语句的执行原理:
switch后面的小括号当中的”数据“和case后面的”数据“进行一一匹配,匹配成功的分支执行。按照自上而下的顺序依次匹配。
4.匹配成功的分支执行,分支当中最后有”break“;语句的话,整个switch语句终止
5.匹配成功的分支执行,分支当中没有”break“;语句的话,直接进行下一个分支执行(不进行匹配)。这种现象被称为case穿透现象。【提供break;语句可以避免穿透】
6.所有分支都没有匹配成功,当有default的语句的话,会执行default分支当中的程序。
7.switch后面和case后面只能是int类型或者String类型的数据,不能是深测其他的类型’
*当然byte,short,char也可以直接写到switch和case后面,因为他们可以进行自动类型转换。
byte,short,char也可以自动转换成int类型。
*JDK6的,switch和case后面只能深测int类型。
*JDK7及之后的版本,引入新特性,switch关键字和case关键字后面可以深测int或String类型的数据。
8.case可以合并:
int i = 10;
switch(i){
case 1:
case 2:
case 3:
case 10:
System.out.println(“Test Code!”);
}
接下来是一些实操:
package com.itemma;
/*
实现思路:
1.选择所有数据从键盘输入
2.使用switch语句进行判断
3.需要从控制台输出三次:
*第一个数字
*运算符
*第二个数字
最终在控制台上是这样的一个场景:
欢迎使用简单计算器系统
请输入第一个数字:10
请输入运算符:+ - * / %
运算结果:10 + 20 = 30
*/
import java.util.Scanner;
public class Complex02 {
public static void main(String[] args) {
System.out.println("请按顺序输入第一个数字,运算符号和第二个运算符号");
java.util.Scanner sc = new java.util.Scanner(System.in);
int a = sc.nextInt();
String c = sc.next();
int b = sc.nextInt();
switch(c){
case "+":
System.out.println("a" + "+" + "b" + "=" + (a + b));
break;
case "-":
System.out.println("a" + "-" + "b" + "=" + (a - b));
break;
case "*":
System.out.println("a" + "*" + "b" + "=" + (a * b));
break;
case "/":
System.out.println("a" + "/" + "b" + "=" + (a / b));
break;
default:
System.out.println("你是不是输入有错了");
}
}
}
package com.itemma;
/*
假设系统给定学生成绩,请判断该考生的成绩等级:
1.有效成绩范围【0-100】
2.考试成绩可能带有小数点
3.考试成绩和等级之间的对照关系;
【90-100】A
[80-90]B
[70-80]C
[60+70]D
[0-60]E
4.以上需求必须采用switch语句完成,不能采用if。
窍门: (int)(成绩/ 10)
0
1
2
3
4
5
6
7
8
9
10
*/
import java.util.Scanner;
public class Complex02 {
public static void main(String[] args) {
System.out.println("该系统可以根据学生成绩,请判断该考生的成绩等级,请输入你的带有小数点0-100 的成绩:");
java.util.Scanner sc = new java.util.Scanner(System.in);
double grade = sc.nextDouble();
int score = (int)(grade / 10);
switch(score){
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("该考生的成绩等级为F,成绩不太好哦,不及格!");
}
}
}
C:\Software\Java\jdk-17\bin\java.exe "-javaagent:E:\IntelliJ IDEA Community Edition 2021.3\lib\idea_rt.jar=63326:E:\IntelliJ IDEA Community Edition 2021.3\bin" -Dfile.encoding=UTF-8 -classpath "E:\IntelliJ IDEA Community Edition 2021.3\IDEA Studying\out\production\IDEA Studying" com.itemma.Complex02
该系统可以根据学生成绩,请判断该考生的成绩等级,请输入你的带有小数点0-100 的成绩:
99.5
该考生的成绩等级为A,太棒了吧!
Process finished with exit code 0
```java
package com.itemma;
//举一个例子:判断1-12月份有多少天
import java.util.Scanner;
public class Complex02 {
public static void main(String[] args) {
char x = 'A';
switch(x){
case 'A':
System.out.println("高级");
break;
case 'B':
System.out.println("中级");
break;
case 'C':
case 'D':
System.out.println("低级");
default:
System.out.println("你是不是输错了");
}
}
}