关于Switch Case的优化】的更多相关文章

switch case虽然是代替if else而出现的,并不好维护,有时候使用switch还不如使用if else. 但没有别的东西能代替switch case了吗?答案当然是否定的,现在就有两种方式. 先看一下使用switch的例子: 设定一个函数,传进来num为1,2,3,4分别返回不同的值 这种情况我们就可以这样写: Map里接受一个具有iterable接口的对象,然后对其进行遍历,get传入的值如果跟Map里key值对应,那么就会返回与key对应的value,如果是赋值操作Map可以完美…
软件重构是改善代码可读性.可扩展性.可维护性等目的的常见技术手段.圈复杂度作为一项软件质量度量指标,能从一定程度上反映这些内部质量需求(当然并不是全部),所以圈复杂度往往被很多项目采用作为软件质量的度量指标之一. C语言开发的项目中,switch/case代码块是一个很容易造成圈复杂度超标的语言特性,所以本文主要介绍下降低switch/case圈复杂度的重构方法(如下图).switch圈复杂度优化重构可分为两部分:程序块的重构和case的重构.程序块重构是对代码的局部优化,而case重构是对代码…
前言 随着项目的迭代,代码中存在的分支判断可能会越来越多,当里面涉及到的逻辑比较复杂或者分支数量实在是多的难以维护的时候,我们就要考虑下,有办法能让这些代码变得更优雅吗? 正文 使用枚举 这里我们简单的定义一个表示状态的枚举. public enum Status { NEW(0),RUNNABLE(1),RUNNING(2),BLOCKED(3),DEAD(4); public int statusCode; Status(int statusCode){ this.statusCode =…
在学习JavaScript中的if控制语句和switch控制语句的时候,提到了使用多条件判断时switch case语句比if语句效率高,但是身为小白的我并没有在代码中看出有什么不同.去度娘找了半个小时,看了各位大神的表述,找到一个比较清晰的文章. 原来,switch进行了跳转优化,java中对switch有两种处理方式,生成不同的jvm指令,一是tableswitch,一个是lookupswitch.对于case的分支比较密集的情况,如: public class Test { public…
一.简述 编程语言中的条件分支结构有两种:if-else和switch-case,这两种条件分支之间可以相互转换,但是也存在一些区别,那么什么时候该用if-else,什么时候该用switch-case呢?这就需要我们去了解它们之间的练习和区别了. 1.1 if...else...简述 if-else的基本知识点包含4点: 单独if语句:单分支结构,简单的一个控制语句,如果满足条件则做对应的操作,否则不做. if( 条件 ) { 条件成立时执行的代码 } if-else语句:双分支结构,这两个分支…
学习Python过程中,发现没有switch-case,过去写C习惯用Switch/Case语句,官方文档说通过if-elif实现.所以不妨自己来实现Switch/Case功能. 方法一 通过字典实现 def foo(var): return { 'a': 1, 'b': 2, 'c': 3, }.get(var,'error') #'error'为默认返回值,可自设置 方法二 通过匿名函数实现 def foo(var,x): return { 'a': lambda x: x+1, 'b':…
switch...case...中条件表达式的演进 最早时,只支持int.char.byte.short这样的整型的基本类型或对应的包装类型Integer.Character.Byte.Short常量 JDK1.5开始支持enum,原理是给枚举值进行了内部的编号,进行编号和枚举值的映射 1.7开始支持String,但不允许为null.(原因可以看后文) case表达式仅限字面值常量吗? case表达式既可以用字面值常量,也可以用final修饰且初始化过的变量.例如以下代码可正常编译并执行: pu…
一丶Switch Case语句在汇编中的第一种表达方式 (引导性跳转表) 第一种表达方式生成条件: case 个数偏少,那么汇编中将会生成引导性的跳转表,会做出 if else的情况(类似,但还是能分辨出来的) 1.高级代码: #include "stdafx.h" int main(int argc, char* argv[]) { switch(argc) { : printf("case 0\n"); break; : printf("case 1\…
策略者模式 很简单的一个定义:抽象策略(Strategy)类:定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,环境角色使用这个接口调用不同的算法,一般使用接口或抽象类实现. 场景 在这之前,你需要看这个文章SPA+.NET Core3.1 GitHub第三方授权登录,了解如何实现第三方授权登录. 我们这里使用策略者模式应用实践,实现第三方授权登录,支持QQ,Gitee,GitHub登录,并且如何把switch case的逻辑判断去掉. 我们先按正常的思路写代码,引用如下类库 AspN…
流程控制语句是C语言中最基本的判断语句,通常我们可以使用IF来构建多分支结构,但同样可以使用Switch语句构建,Switch语句针对多分支的优化措施有4种形式,分别是,IF-ELSE优化,有序线性优化,非线性索引优化,平衡判定树优化. 与IF语句结构不同,IF语句会在条件跳转后紧跟语句块,而SWITCH结构则将所有条件跳转都放置在一起,判断时需要重点观察每个条件跳转指令后面是否跟有语句块,以辨别SWITCH分支结构. 在switch分支数小于4的情况下,编译器将采用模拟IF-ELSE分支的方式…
Android Studio快捷键switch case 轻松转换为if else 今天碰到的问题,没有找到资料,后面找到了方法,这个记下来,转载请注明出处:http://www.cnblogs.com/LT5505/p/5462820.html 原始代码如下: 随后选中“switch”,ALt+Enter同时选中,弹出对话框,选择“Replace 'switch' with 'if'”, 选中之后,点击,即可将“switch”转换为了'if'样式,如果需要转回“switch”,同样的快捷键方式…
switch-case语句格式如下 switch(变量){ case 变量值1: //; break; case 变量值2: //...; break; ... case default: //...; break; } swtich()变量类型只能是int.short.char.byte和enum类型.当进行case判断时,JVM会自动从上到小扫描,寻找匹配的case,可能存在以下情况: 情况一:若未找到,则执行默认的case. int i = 5; switch(i){ case 0: Sy…
1.表达式: 表达式的判断是有无结果(值), 最简单的表达式是一个常量或变量, 如:12, a, 3 + 1, a + b, a + 5 都是表达式 2.BOOL(布尔)数据类型: c语言中除了基本数据类型, 还有BOO数据类型, 以及一些其它的数据类型, 如自定义的结构体数据类型 BOOL数据类型是一种表示非真即假的数据类型, 布尔类型的变量只有YES和NO两个值. YES表示表达式结构为真, 反之, NO表示表达式结果为假(在c语言中, 认为非0即为真), BOOL类型主要用与分支结构或循环…
分支语句: if        else if       else      :    switch          case --如何使用 if  else if  else: Console.WriteLine("请你出拳"); --输出[请你出拳]            int a = Convert.ToInt32(Console.ReadLine()); --定义一个变量a            Random i = new Random(); --随机数        …
判断成绩所属等级的 两种方法 1...      switch...case方法: #include<stdio.h> int main(void) { ;i <= ;++i) //允许用户10次输入 { ; //学生成绩 ; //学生成绩除以10 printf("请输入学生成绩以判定其所属等级\n"); scanf("%d",&score); scoreChange=(); //学生成绩除以10,并对其取整,scoreChange为0到1…
根据传入条件的不同,选择语句会执行不同的语句.下面的例子根据传入的整型变量i的不同而打印不同的内容: switch i { case 0: fmt.Printf("0") case 1: fmt.Printf("1") case 2: fallthrough case 3: fmt.Printf("3") case 4, 5, 6: fmt.Printf("4, 5, 6") default: fmt.Printf("…
工作中从buff里截取了一个字符串,然后和配置文件中的字符串名字对比 ,如果一样,处理,不一样,elseif 再判断,再处理! switch(){case : case :...... }先说语法,再说注意事项switch的判断变量类型只能是字符型或者整型,请注意,只有这两种才可以switch后面紧跟的那个小括号里面 就是 要判断的变量名称 然后switch要求它后面的大括号完整,不能不写case 后面加一个空格跟上条件 当然条件也只能是字符型或者整型,然后加上冒号,条件语句正式开始 ,末了,不…
用switch case处理一个很长的判断,例如56个民族01代表汉族,02代表藏族,03代表壮族...,当传入数字想获取民族名称时就得写56个case,当传入民族获取背后的数字时,又得再写56个case,如下所示: private string GetNationValue(string s) { string result = "5"; switch (s) { case "01": result = "汉族"; break; case &q…
while的写法 var i=0; while(i<5){ document.write("12378<br />");  i++;} while(true)----死循环的写法.{ } do{}while();不管你正确与否,都先去执行一次,然后去判断,若不满足,则不继续执行var a =1;do{ document.write("12346789");-------不管下面的条件是什么,都会先打印出来”123456789“}while(a<…
相信很多和我一样的小伙伴刚从Eclipse转到Android Studio的时候,一定被快捷键给搞得头晕了,像Eclipse中代码补齐的快捷键是Alt+/ ,但是在AS中却要自己设置,这还不是问题的关键,比如在Eclipse中,输入sw然后按住Alt+/的时候,switch/case代码块就自动补齐了,对于我等喜欢偷懒的人来说省去了很多麻烦,但是在AS中就算按住Ctrl+space快捷键也没法补齐代码块,是不是就不行了呢,下面我就献丑了,带大家一起来定制自己的switch/case代码块. 首先…
Switch case必须与break一起使用 Break 是跳转语句.与switch case连用的时候是跳出最近的{}. static void Main(string[]args ) { //switch case 多用于年月日的计算 int cs=1; switch(cs)//小括号内是一个数据类型的值 { //case 后加空格,之后写上跟上面小括号内对应类型可能出现的值 case 1://cs值为1,则进行着一步,显示case 1 Console.WriteLine("case 1&…
语句的类型包括:声明语句.表达式语句.选择语句.循环语句.跳转语句.异常语句 1.声明语句引:入新的变量或常量. 变量声明可以选择为变量赋值. 在常量声明中必须赋值. 例如: int i = 0;//声明变量i 并赋值,也可以不赋值. double d; “//”表示注释一行,“/*…*/”可以注释一段区域,注释后的内容变绿. 2.表达式语句:用于计算值的表达式语句必须在变量中存储该值. 例如: sum = i + j;//变量i和j在此之前必须先赋值.而且sum也需要声明类型. int x =…
1.while语句:当···的时候 格式:初始条件           while(循环条件)         {          循环体;          状态改变;         } 相当于for循环的另一种变形. 例如: static void Main(string[] args) { //循环四要素:初始条件,循环条件,状态改变,循环体 ; ;//初始条件 )//循环条件 { sum += i;//循环体 i++;//状态改变 } Console.Write(sum); } st…
------------------------------------------运算符---------------------------------------------------- *数学运算符:+  -  *  /  % 加 减 乘 除 取余 +可以用作字符串的拼接 <body> </body> <script> var a="hello"; var b="nihao"; var s=a+b; alert (s);…
java中的Switch case 语句 在Switch语句中有4个关键字:switch,case break,default. 在switch(变量),变量只能是整型或者字符型,程序先读出这个变量的值,然后在各个"case"里查找哪个值和这个变量相等,如果相等,则条件成立,程序执行相应的分支,直到碰上break或有switch语句结束. 有几个需要着重注意的地方. 第一,前面说了switch(变量),只能是整型和字符类型. 第二,case之后是直接的常量数值. 第三,break使得程…
李洪强漫谈iOS开发[C语言-039]-switch case 补充:…
switch… case 语句的用法   public class Test7 { public static void main(String[] args) { int i=5; switch(i) { case 1: System.out.println("one"); case 10: System.out.println("ten"); case 5: System.out.println("five"); case 3: System…
今天学习了选择语句的 switch case是多选一的情况可以使用. 案例: //分别输入月份 几号 输出是今年的多少天 //每年的1,3,5,7,8,10,12月是31天 //今年的2月是28天 其他是30 , m2 = , m3 = , m4 = , m5 = , m6 = , m7 = , m8 = , m9 = , m10 = , m11 = ;----无需定义12月份的量,因为用不着 Console.Write("请输入月份:"); int m = int.Parse(Con…
1. switch case break(跳出) 距离break 最近的大括号,跳出这个大括号,执行大括号之后的命令 switch case 必须与 break 一同使用. 分别输入月份 几号 输出是今年的第多少天 每年的1 3 5 7 8 10 12月是31天 今年的2月是28天 其他的4 6 9 11是30天. int m =int.Parse(Console.ReadLine()); //定义输入的月份为m int d = int.Parse(Console.ReadLine()); //…
case 在编程中偶尔使用到switch case语句,对于case语句的处理,出现了两种错误,现总结如下: case后必须是常量.布尔类型.字符(不能是字符串): case后如果是‘||’或者‘&&’或者‘<’或者‘>’等逻辑运算,则实际是1或者0: case后不能出现变量,包括switch中包含的那个变量. #include <iostream> using namespace std; int main(int argc, char * argv[]) { i…