Java中的switch分支结构

switch分支结构

1.基本语法

switch(表达式){
	case 常量1:  //当...
	语句块1;
	break;
	case 常量2:  
	语句块2;
	break;
	...
	case 常量n:  
	语句块n;
	break;
	default:
	default语句块;
	break;
}

在Java中只要是一个表达式就有值返回

2.说明

1)switch关键字,表示switch分支
2)表达式 对应一个值
3)case 常量1 :当表达式的值等于常量1,就执行 语块1
4)break :表示退出switch
5)如果和case 常量1 匹配,就执行语块1,如果没有匹配,就继续匹配 case 常量2
6)如果一个都没有匹配上,执行default

3.流程图

在这里插入图片描述
如果等于常量1,执行语句块1,若没有break则会执行语句块2,还没有break继续执行语句块3(穿透)

4.案例

编写一个程序,该程序可以接收一个字符,比如a,b,c,d,e,f,g
a表示星期一,b表示星期二…
根据用户的输入显示相应的信息,要求使用switch语句完成

import java.util.Scanner;//表示把java.util包下的Scanner类导入
public class comment00{

	//编写一个main方法
	public static void main(String[] args){
	
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入");
	char c1 = sc.next().charAt(0);
//在Java中只要是一个表达式就有值返回
	switch(c1) {
		case 'a' :
			System.out.println("今天星期一");
			break;
		case 'b' :
			System.out.println("今天星期二");
			break;
		case 'c' :
			System.out.println("今天星期三");
			break;
		//..... 	
		default:
			System.out.println("输入不正确");
			
	}

	System.out.println("退出switch,继续执行程序");
			
	}  
}

5.注意事项

1)表达式数据类型应和case 后的常量类型一致,或者是可以自动转成可以相互比较的类型,比如输入的是字符,而常量是int(字符型可以自动转换成int型)
2)switch(表达式)中表达式的返回值必须是:byte , short , int , char , enum[枚举] , String
3)case子句中的值必须是常量或常量表达式,而不能是变量
4)default子句是可选的,当没有匹配的case时,执行default
5)break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有写break,程序会顺序执行到switch结尾,除非遇到break;

6.练习

对于成绩大于60分的,输出“合格”,低于60分的,输出“不合格”。输入的成绩不得大于100

1)临时变量temp

import java.util.Scanner;//表示把java.util包下的Scanner类导入
public class comment00{

	//编写一个main方法
	public static void main(String[] args){
	
	Scanner sc = new Scanner(System.in);
	System.out.println("请输入成绩");
	double temp = sc.nextDouble(); //用一个临时变量temp来接收键盘输入的成绩
	int grade = 0;

	if(temp >= 0 && temp < 60){
		grade = 1;
	}
	else if(temp >= 60 && temp <=100){
		grade = 2;
	}
	else{
		System.out.println("成绩不对重新输入");
	}
	
	
	switch(grade) {
		case 1 :
			System.out.println("不合格");
			break;
		case 2 :
			System.out.println("合格");
			break;
	}

			
	}  
}

2)强制类型转换(int)成绩 / 60

import java.util.Scanner;
public class comment01{

	public static void main(String[] args){

	Scanner sc = new Scanner(System.in);
	System.out.println("请输入成绩:");
	double grade = sc.nextDouble();

	if(grade >= 0 && grade <= 100){
		switch((int)(grade / 60)){
			case 0 :
			System.out.println("不合格");
			break;
			case 1 :
			System.out.println("合格");	
			break;
		}

	}
	else{
		System.out.println("成绩输入错误,请输入成绩在0-100内");
	}
	
	}



}

根据指定月份,打印该月份所属的季节。3,4,5春季;6,7,8夏季;9,10,11秋季;12,1,2冬季

import java.util.Scanner;
public class comment01{

	public static void main(String[] args){

	 Scanner sc = new Scanner(System.in);
	 System.out.println("请输入月份(1-12):");
	 int month = sc.nextInt();
 
	 //case穿透
	 
	 switch(month){
	 	case 1 :
	 	case 2 :
	 	case 12 :
	 		System.out.println("冬季");
	 		break;
	 	case 3 :
	 	case 4 :
	 	case 5 :
	 		System.out.println("春季");
	 		break;
	 	case 6 :
	 	case 7 :
	 	case 8 :
	 		System.out.println("夏季");
	 		break;
	 	case 9 :
	 	case 10 :
	 	case 11 :
	 		System.out.println("秋季");
	 		break;
	 	default :
	 		System.out.println("输入有误,请输入1-12的月份");
	 }

	}
}

7.switch和if的比较

1)如果判断的具体值不多,而且符合byte、short、int、char、enum、String这6种类型。虽然两个语句都可以使用,建议使用switch语句。
2)其他情况:对区间判断,对结果为boolean类型判断,使用if ,if的适用范围更广。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值