switch-case分支结构总结
1,格式
switch(表达式){
case 常量1:执行语句1;
case 常量1:执行语句1;
... ...
case 常量n:执行语句n;
default:执行语句;}
2,说明:
- 根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构的末尾处;
- break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构;
- switch结构中的表达式,只能是如下的6种类型之一:byte short char int 枚举类型(JDK 5.0新增),string类型(jdk7.0新增)
- case之后只能声明常量,禁止写范围
- break关键字是可选的
- default相当于IF-ELSE结构中的 else;default结构是可选的;位置是可选的,但一般写最后;
3.练习
练习一:使用switch把小写类型的char转换为大写,只转换啊a,b,c,d,e,其他的输出为other;
import java.util.Scanner;
public class SwitchTest1 {
public static void main (String args[]) {
System.out.println("请输入一个字符:");
Scanner scan=new Scanner(System.in);
7 String intput = scan.next();
8 char c=intput.charAt(0);
switch(c){
case('a'):
System.out.println('A');
break;
case('b'):
System.out.println('B');
break;
case('c'):
System.out.println('C');
break;
case('d'):
System.out.println('D');
break;
case('e'):
System.out.println('E');
break;
default:System.out.println("other");
}
}
运行结果:

练习二:对学生成绩大于60分的,输出合格,低于60分的,输出不合格;
import java.util.Scanner;
public class switchTest2 {
public static void main(String args[]) {
System.out.println("请输入你的成绩:");
Scanner grade=new Scanner(System.in);
int grade1=grade.nextInt();
switch(grade1/60) {
case(0):
System.out.println("不合格");
break;
case(1):
System.out.println("合格");
break;
}
}
}
运行结果:

切记switch变量不能使用范围,而当情况种数较多时,一一列出显然不必,switch结构具有多个case可以合并的性质。
一开始想到的是将变量写为grade1/10,case0-5输出为不合格,case6-10输出为合格;如图所示:

但显然没有除以60高效,所以做出修改;
练习三:从键盘分别输入年月日,判断这一天是当年的第几天?
注:判断一年是不是闰年的标准:①可以被4整除,但不能被100整除;或②可以被400整除;
import java.util.Scanner; /*
从键盘分别输入年月日,判断这一天是当年的第几天? 注:判断一年是不是闰年的标准:①可以被4整除,但不能被100整除;或②可以被400整除;
*/
public class SwitchExer {
public static void main(String args[]) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入年份:");
int year=scan.nextInt();
System.out.println("请输入月份:");
int month=scan.nextInt();
System.out.println("请输入天数:");
int day=scan.nextInt();
int sumdays=0;
switch(month) {
case 12:
sumdays +=30;
case 11:
sumdays +=31;
case 10:
sumdays +=30;
case 9:
sumdays +=31;
case 8:
sumdays +=31;
case 7:
sumdays +=30;
case 6:
sumdays +=31;
case 5:
sumdays +=30;
case 4:
sumdays +=31;
case 3://判断是不是闰年
if((year%4==0 && year%100!=0) || year%400==0) {
sumdays +=29;
}else sumdays+=28;
case 2:
sumdays +=31;
case 1:
sumdays += day;
default:System.out.println("输入有误,请重新输入:");
}
System.out.println(year+"年"+month+"月"+day+"日是当年的第"+sumdays+"天");
}
}
运行结果:

4,两个分支结构的使用选择策略:
凡是可以使用switch—case 都可以使用If-else,反之,不成立;
如果两者都可以使用(switch中表达式的取值情况不太多时),优先选择switch-case结构;原因:switch-case执行效率稍高;
switch-case分支结构总结的更多相关文章
- JAVA if条件语句,switch多分支结构,与逻辑运算符
一.if条件语句 示例: import java.util.Scanner; public class Test{ public static void main(String[] args){ Sc ...
- 【2017-2-23】C#switch case分支语句,for循环语句
switch case分支语句 switch(一个变量值) { case 值:要执行的代码段;break; case 值:要执行的代码段;break; … default:代码段;break;(def ...
- js中switch/case分支的值可以是变量或表达式
在一些高级语言如C#中,switch分支的值只能是常量,而js中可以是变量或表达式: <!DOCTYPE html> <html lang="en"> &l ...
- c语言基础表达式, 关系运算符, 逻辑运算符, 位运算符, 数据的取值范围, 分支结构(if...else, switch...case)
1.表达式: 表达式的判断是有无结果(值), 最简单的表达式是一个常量或变量, 如:12, a, 3 + 1, a + b, a + 5 都是表达式 2.BOOL(布尔)数据类型: c语言中除了基本数 ...
- 【2-23】分支语句(switch…case)及循环语句
Switch-case分支语句与if语句作用相同,但需将情况都罗列出比较麻烦所以不常用. 其基本结构是: Switch(一个变量值) { Case 值1:要执行的代码段:break; Case 值2: ...
- iOS学习02C语言分支结构
1. BOOL类型 返回值:真:YES 假:NO BOOL数据类型占一个字节的内存空间,占位符为%d. 计算机在识别时,YES就替换成1,NO就替换成0. bool是C语言中的布尔类型,返回值为tr ...
- iOS学习之C语言分支结构
一.BOOL类型 返回值:真:YES 假:NO 定义一个布尔类型的变量 YES == 1, NO == 0 计算机在识别时,YES就替换成1,NO就替换成0 BOOL isGirl = YES; ...
- iOS开发-OC分支结构
BOOL类型 返回值:真:YES 假:NO BOOL数据类型占一个字节的内存空间,占位符为%d. 计算机在识别时,YES就替换成1,NO就替换成0. bool是C语言中的布尔类型,返回值为true ...
- C# 利用键值对取代Switch...Case语句
swich....case 条件分支多了之后,会严重的破坏程序的美观性. 比如这个 上述代码是用于两个进程之间通信的代码,由于通信的枚举特别的多,所以case的分支特别的多.导致了代码的可读性,可维护 ...
- Java 8- Java 分支结构 - if…else/switch
Java 分支结构 - if...else/switch 顺序结构只能顺序执行,不能进行判断和选择,因此需要分支结构. Java有两种分支结构: if语句 switch语句 if语句 一个if语句包含 ...
随机推荐
- Eclipse中文件结构的树形显示问题
问题描述:在Eclipse中的SpringBoot文件显示层级消失. 这种情况下编辑代码的效率大大下降. 原因:Eclipse的工作模式不正确.上面的工作模式是Java模式.实际上应采用JavaEE模 ...
- maven项目创建3 (依赖版本冲突)
调节原则 1 路径近者优先原则 自己添加一个想要依赖的版本 2第一声明者优先原则 谁排在前面就用谁的 以上两种统称为 调节原则 排除原则 排除自己的不想要的版本 版本锁定 谁能够提供锁定的版本,就用谁 ...
- B/S结构下上传下载大文件(1G以上)的解决方案
以ASP.NET Core WebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API ,包括文件的上传和下载. 准备文件上传的API #region 文件上传 ...
- BZOJ 3551: [ONTAK2010]Peaks加强版 Kruskal重构树+dfs序+主席树+倍增
建出来 $Kruskal$ 重构树. 将询问点向上跳到深度最小,且合法的节点上. 那么,得益于重构树优美的性质,这个最终跳到的点为根的所有子节点都可以与询问点互达. 对于子树中求点权第 $k$ 大的问 ...
- hdu 1208 Ignatius and the Princess III 划分数,dp
题目 题意:给你一个数字n,求将其划分成若干个数字相加总共有多少种划分数: <span style="font-size:24px;">#include <ios ...
- THUSC2016 成绩单
题目链接:Click here Solution: 我们设\(f[l][r][x][y]\)表示在原区间\(l\sim r\) 内还未被取走的值最大为\(x\)最小为\(y\)时的代价,这里我们只考虑 ...
- jmeter csv Data Set Config 文件中带引号的数据转换问题(自动添加双引号解决办法)
1.我们从csv中获取数据,在jmeter中使用这些数据,其中csv的数据如图,有的数据包含引号. 2.问题:我们获取的json数据,被自动添加了双引号 3.解决方式: 在CSV Data Set C ...
- Python3学习笔记(十五):常用时间模块time和datetime
一.time模块 1.时间戳 time.time() :从1970-01-01到至今的秒数 import time print(time.time()) 1529238004.2784646 2.等待 ...
- Python3学习笔记(十四):可迭代对象、迭代器和生成器
记得在刚开始学Python的时候,看到可迭代对象(iterable).迭代器(iterator)和生成器(generator)这三个名词时,完全懵逼了,根本就不知道是啥意识.现在以自己的理解来详解下这 ...
- AtCoder AGC022C Remainder Game (图论)
题目链接 https://atcoder.jp/contests/agc022/tasks/agc022_c 题解 大水题一道 就他给的这个代价,猜都能猜到每个数只能用一次 仔细想想,我们肯定是按顺序 ...