大白成为Java软件攻城狮的第九天(switch控制语句)

Java中的switch控制语句

关于switch语句:

1、witch语句也属于选择结构,也是分支语句

2、switch语句的语法结构:
一个比较完整的switch语句应该这样编写

switch (int或String类型的字面值或变量){
    
    
	case int或String类型的字面值或变量:
		java语句;
		java语句;
		...
		break;
	case int或String类型的字面值或变量:
		java语句;
		java语句;
		...
		break;
	case int或String类型的字面值或变量:
		java语句;
		java语句;
		...
		break;
	default:
		java语句;
		...
}

3、switch语句的执行原理:

switch语句后面小括号当中的“数据”进行一一匹配,匹配成功的分支执行按照自上而下的顺序依次匹配。

4、匹配成功的分支执行,分支当中最后有“break;”语句的话,整个switch语句终止。

5、匹配成功的分支执行,分支当中没有“break;”语句的话,直接进入下一个分支执行(不进行匹配),这种现象被称为 case穿透 现象。【提供break;语句可以避免穿透】

case穿透:
int i=10switch(i){
    
    
	case 1:
		java语句;
	case 2:
		java语句;
	case 3: 
		java语句;
		break//输入1,输出的结果是前三条java语句
	case 4:
		java语句;
		System.out.println("Test Code!");
		break;
}

6、所有分支都没有匹配成功,当有default的语句的话,会执行default分支当中的程序

7、switch后面和case后面只能是int或者String类型的数据,不能是探测其他类型。

  • 当然byte,short,char也可以直接写到switch和case后面,因为它们可以进行自动类型转换。byte,short,char可以自动转换成int类型。
  • JDK6的,switch和case后面只能探测int类型。
  • JDK7之后包括7版本在内,引入新特性,switch关键字和case关键字后面可以探测 int 和string类型的数据。

8、case可以合并:

int i=10switch(i){
    
    
	case 1case 2case 3//输入1、2、3输出的结果相同
		java语句;
		breakcase 4:
		java语句;
		System.out.println("Test Code!");
		break;
}

10、switch语句例子

public class SwitchTest01
{
    
    
	public static void main(String[] args){
    
    
		long a = 10L;
		int b = a; //编译错误
		
		long x = 10L;
		switch(x){
    
    } //编译报错,switch语句不能用long
		
		解决编译错误:
		long x = 10L;
		switch((int)x){
    
    }
		
		byte b = 10;
		switch(b){
    
    } //编译通过

		short s = 10;
		switch(s){
    
    } //编译通过
		
		char c = 'A';
		switch(c){
    
    } //编译通过
		
		char cc = 12;
		switch(cc){
    
    } //编译通过
		
		 //编译报错
		//switch(ture){}

		String username = "zhangsan";
		switch(username){
    
    }
	}
}

11、switch确实可以探测String类型,这是Java7的新特性。

简单计算器系统实现:

public class SwitchTest02()
{
    
    
	public static void main(String[] args){
    
    
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.println("欢迎使用简单计算器系统:");
		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 = sum1 + sum2;
				break;
			case "-" :
				result = sum1 - sum2;
				break;
			case "*" :
				result = sum1 * sum2;
				break;
			case "/" :
				result = sum1 / sum2;
				break;
			case "%" :
				result = sum1 % sum2;
				break;
			default :
				System.out.println("输入运算符号错误");
		}	
		System.out.println("运算结果为:"+ num1 + operator + num2 + "=" + result );
	}
}

假设系统给定考生成绩,判断该考生的成绩等级:

  • 有效成绩范围:【0-100】
  • 考试成绩可以有小数
  • 考试成绩和等级之间的对照关系:
    【90-100】 A
    【80-90】 B
    【70-80】 C
    【60-70】 D
    【0-60】 E
  • 以上需求必须采用switch语句完成,不能采用if
    窍门:(int)(成绩 / 10)
public class SwitchTest03()
{
    
    
	public static void main(String[] args){
    
    
		double score = 数字:
		int grade = (int)(score/10);
		switch(grade){
    
    
			case 9:case 10:
				System.out.println("A");
				break;
			case 8:
				System.out.println("B");
			case 7:
				System.out.println("C");
			case 6:
				System.out.println("D");
			default:
				System.out.println("E");
		}
	}
}

猜你喜欢

转载自blog.csdn.net/qq2632246528/article/details/112568404