当前位置: 首页 > article >正文

Java中的switch分支结构

switch分支结构

  • switch分支结构
    • 1.基本语法
    • 2.说明
    • 3.流程图
    • 4.案例
    • 5.注意事项
    • 6.练习
    • 7.switch和if的比较

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的适用范围更广。


http://www.kler.cn/news/329566.html

相关文章:

  • 解析Vue2源码diff算法更新子节点逻辑以及优化
  • 专访 Bitlayer 联合创始人 Charlie:探索比特币 Layer2 技术的未来
  • 【高阶数据结构】平衡二叉树(AVL)的删除和调整
  • Hadoop三大组件之MapReduce(一)
  • 计算机毕业设计 C语言学习辅导网站的设计与实现 Java实战项目 附源码+文档+视频讲解
  • C#秒如何转为时分秒格式
  • 智能BI项目第六期
  • 亚信安全天穹5分钟勒索体检 免费试用今起上线
  • RabbitMQ高级特性-持久性
  • STM32单片机编程调试常见问题(二) Keil5软件调试中常见的配置问题
  • 【GEE学习第一期】GEE介绍、注册及基本使用
  • Leetcode 3301. Maximize the Total Height of Unique Towers
  • Spring Boot技术栈:打造高效在线商城
  • 【经典机器学习算法】谱聚类算法及其实现(python)
  • 【DirectX sdk 学习使用】
  • DRF笔记
  • Qt --- 常用控件的介绍---Widget属性介绍
  • 如何隐藏Windows10「安全删除硬件」里的USB无线网卡
  • 计算机毕业设计 智能旅游推荐平台的设计与实现 Java实战项目 附源码+文档+视频讲解
  • 【MySQL 06】表的增删查改
  • Word样式的同步与重置
  • Golang | Leetcode Golang题解之第437题路径总和III
  • LeetCode从入门到超凡(四)深入浅出理解贪心算法
  • 使用Electron将vue项目改桌面程序
  • SpringBoot学习笔记(2)
  • 服务器感染了.baxia勒索病毒,如何确保数据文件完整恢复?
  • 通信工程学习:什么是POP3邮局协议版本3
  • 如何使用MethodChannel通信
  • 匈牙利算法模板
  • java项目实现钉钉异常告警实时监控