热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java开发笔记(十七)各得其所的多路分支

前面提到条件语句的标准格式为“if(条件){*条件成立时的操作代码*}else{*条件不成立时的操作代码*}”,乍看之下仿佛只有两个分支,一个是条件成立时的分支,另一个

前面提到条件语句的标准格式为“if (条件) { /* 条件成立时的操作代码 */ } else { /* 条件不成立时的操作代码 */ }”,乍看之下仿佛只有两个分支,一个是条件成立时的分支,另一个是条件不成立时的分支。很明显仅仅两个分支是不能满足复杂的业务需求的,自然Java代码也不会这么傻瓜到固步自封,为此else分支还允许嫁接别的if条件,形如“if (条件一) { } else if (条件二) { } else if (条件三) { } else { }”这样,不管来几个条件分支,都能通过“else if”加以判断和处理。像之前的猜谜游戏,输入数字1时打印凉风有信的谜底,输入数字2时打印秋月无边的谜底,现在规定输入其它数字要打印“按键有误”的提示,此时一共存在三个条件分支,往原来的if/else语句添加一个“else if”即可实现三个分支。
下面便是改写成三个分支之后的代码例子:

		System.out.println("凉风有信,秋月无边。打二字");
		System.out.println("获取“凉风有信”的谜底请按1,获取“秋月无边”的谜底请按2");
		Scanner scan = new Scanner(System.in); // 从控制台接收输入文本
		/* nextLine方法表示接收一行文字,以回车键结尾 */
		int seq = scan.nextInt();
		if (seq == 1) { // 条件式子1为真时,进入第一个if分支处理
			System.out.println("凉风有信的谜底是“讽”");
		} else if (seq == 2) { // 否则的话,继续判断条件式子2为真时,进入第二个if分支处理
			System.out.println("秋月无边的谜底是“二”");
		} else { // 否则(前面的判断条件都不满足),进入else分支处理
			System.out.println("您的按键有误");
		}

 

可要是分支数量多了起来,岂不是得写一样多的“if else”?这种做法虽然可行,但毕竟大费周折,条理也不够清晰。故而早期的设计师构造了“swicth-case”语句,也被称作是多路分支结构,在该控制流程之中,对每个分支都指定了一个数值把关,只有设定的变量符合数值要求,才能进到相应的分支处理。这样做的好处是,方便编译器在底层进行优化,既可利用二分查找法加快寻找速度,又可采取地址映射直接找到指定分支。兼容并蓄的Java自然继承了有利于调优的“swicth-case”,多路分支语句除了swicth和case,还额外增加了break和default两个关键字。break的作用是跳出整个多路分支,不再执行本分支及其余分支的代码;default的作用相当于else,所有不满足任何已知条件的数值,都进入到default这个默认分支来处理。
仍以猜谜游戏为例,使用“swicth-case”改写后的多路分支代码如下所示:

		// switch允许判断某个变量的多个取值,并分别进行单独处理
		switch (seq) {
			case 1: // seq值为1时进入该分支
				System.out.println("凉风有信的谜底是“讽”");
				break; // 跳出多路分支。即跳到switch分支的右花括号之后
			case 2: // seq值为2时进入该分支
				System.out.println("秋月无边的谜底是“二”");
				break; // 跳出多路分支。即跳到switch分支的右花括号之后
			default: // seq值为其它时进入该分支
				System.out.println("您的按键有误");
				break; // 跳出多路分支。即跳到switch分支的右花括号之后
		}
		System.out.println("猜谜结束");

 

多路分支固然好用,但要特别注意以下几点:
1、每个case分支末尾务必要加上break语句,否则即使该分支走完了也不会跳出多路分支,而是继续执行该分支的后面一个分支代码,显然这并非程序员的本意。
2、多路分支只能判断整型、字符串、枚举这三种类型的变量,无法判断布尔、浮点、双精度等其它类型的变量。
3、case语句后面的数值,只能用来进行相等判断,不能开展大于、小于等其它关系运算。


推荐阅读
  • 那你就是学的c语言,跟我学c语言
    本文目录一览:1、如何学习C语言?2、新手如何 ... [详细]
  • Java SE从入门到放弃(三)的逻辑运算符详解
    本文详细介绍了Java SE中的逻辑运算符,包括逻辑运算符的操作和运算结果,以及与运算符的不同之处。通过代码演示,展示了逻辑运算符的使用方法和注意事项。文章以Java SE从入门到放弃(三)为背景,对逻辑运算符进行了深入的解析。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • switch语句的一些用法及注意事项
    本文介绍了使用switch语句时的一些用法和注意事项,包括如何实现"fall through"、default语句的作用、在case语句中定义变量时可能出现的问题以及解决方法。同时也提到了C#严格控制switch分支不允许贯穿的规定。通过本文的介绍,读者可以更好地理解和使用switch语句。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Java程序设计第4周学习总结及注释应用的开发笔记
    本文由编程笔记#小编为大家整理,主要介绍了201521123087《Java程序设计》第4周学习总结相关的知识,包括注释的应用和使用类的注释与方法的注释进行注释的方法,并在Eclipse中查看。摘要内容大约为150字,提供了一定的参考价值。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 本文介绍了在Java中检查字符串是否仅包含数字的方法,包括使用正则表达式的示例代码,并提供了测试案例进行验证。同时还解释了Java中的字符转义序列的使用。 ... [详细]
  • 初探PLC 的ST 语言转换成C++ 的方法
    自动控制软件绕不开ST(StructureText)语言。它是IEC61131-3标准中唯一的一个高级语言。目前,大多数PLC产品支持ST ... [详细]
  • C++基础 | 从C到C++快速过渡
    一、开发环境c++使用的编译器是g& ... [详细]
  • switch分支结构一、程序运行流程的分类1、顺序结构:根据程序顺序依次执行。2、分支结构:根据判断决定程序的执行顺序。3、循环结构。分支结构三要素&# ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
author-avatar
mobiledu2502902777
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有