选择结构(二)

学习本章会用到的单词:

case:实例,情形,情况

switch:转换,切换,开关

default:系统默认值,违约,预设。缺省

exit:出口,通道,退出

consume:消耗,耗费,

exception:例外,除外,异议


switch选择结构

语法:switch(表达式){

         case 常量 1:

            //代码块1;

              break;

        case 常量 2:

            //代码块2;

            break;

            ......    

default:

//代码块n;

      break;

}

switch结构中四个关键字解释:

这里是switch,case,default,break,都是Java的关键字。

》switch:表示:“开关”,这个开关就是switch关键字后面小括号里表达式的值,JDK1.7后,switch语句小括号里可以是int ,short,byte ,char,枚举类型 ,String类型表达式。

》case:表示“情况,情形”,case后可以是int,short,byte ,char,枚举,String类型,通常是一个固定的值。case块可以有多个,顺序可以改变,但是每个case后常量的值必须各不相同。

》default:表示默认,即其他情况都不满足。default后要紧跟冒号。default块和case块的先后顺序可以变动,不会影响程序执行的结果。通常,default块放在末尾,也可以省略。

》 break:表示“停止”,即跳出当前结构。

switch选择结构的执行具体过程:

先计算并获得switch后面小括号里的表达式或变量的值,然后将计算结果顺序与每个case后的常量比较,当二者相等时,执行这个case块中的代码;当遇到break时,就跳出switch选择结构。执行switch选择结构之后的代码。如果没有任何一个case后的常量与switch后的小括号中的值相等,则执行switch末尾部分的default块中的代码。

注意!

虽然break语句是可以省略的,,但是省略后会带来一些问题。省略之后的后果为,当某个case后的常量值与switch后小括号中的值相匹配时,执行该case块的代码,后面的case就不再进行条件判断,而直接执行后面所有case块中的代码,直到遇到break结束。所以在编写switch选择结构时不要忘记在每个case块后加上一个“break;”,用来跳出switch选择结构。

每个case后的代码块可以有多个语句,即可以有一组语句。而且不需要用“{ }”括起来。case和default后都有一个冒号,不能漏写,否则编译不能通过。对于每个case的结尾都要想一想是否需要跳出整个switch选择结构。如果需要,一定不要忘记写“break;”。

小结

swith选择结构的条件只能是等值的判断,而且只能是整形或字符型的等值判断。也就是说,switch选择结构只能用于判断一个整型变量或表达式是否等于某个整数值的情况,或者一个字符型变量或表达式是否等于某个字符的情况,并且每一个case后面的常量值都不同。多重if选择结构和switch选择结构很相似,它们都是用来处理多分支条件的结构,但是switch选择结构只能用于等值条件判断的情况。

选择结构总结

>Java中的if选择结构,包括以下形式。

基本的if选择结构:可以处理单一或组合条件的情况。

语法:

if(条件){

//代码块

}

if-else选择结构:可以处理简单的条件分支情况。这种形式结构简单,但在实际开发中使用非常频繁。

语法:

if(条件1){

//代码块1

}else{

  //代码块2

}

多重if选择结构:可以处理复杂的条件分支情况。多重if选择结构在解决需要判断的条件是连续的区间时有很大的优势。

语法:

if(条件1){

    //代码块1

}else if(条件2){

    //代码块2

}else{

    //代码块3

}

其中,else  if块可以有多个,也可以没有,需要几个else if完全取决于实际需求。else块最多有一个或者没有,else块必须要放在else   if块之后。

嵌套if选择结构:在if选择结构中又包含一个或多个if选择结构的情况,这种结构一般用于较为复杂的流程控制中。if选择结构嵌套的形式很多,以下形式为基本的结构。

语法:

if(条件1){

  if(条件2){

    //代码块1

}else{

    //代码块2

   }

}else{

  if(条件3){

    //代码块3

  }else{

    //代码块4

  }

}

Java中的switch选择结构。

当需要多重分支并且条件判断是等值判断的情况下,使用switch选择结构代替多重if选择结构会更简单,代码结构更清晰易读。

处理系统异常

》通过调用Scanner对象的hasNextInt()方法,来判断用户从键盘上输入的字符是否合法,如果用户提示输入的是数值,则根据输入的具体数值跳转到相应的菜单,如果用户输入的不是数字,则给出好友提示“请输入正确的数字!”.

通过判断,并给出用户提示,增加了程序的健壮性,是程序能够较好地处理发生的异常,在后面的学习中将介绍更多处理程序异常的方法。

本章总结

》当需要多重分支并且条件判断是等值判断的情况下,使用switch选择结构代替多重if选择结构会更简单,代码更清晰易读。在使用switch选择结构时不要忘记在每个case的最后上写上break语句。

》为了增加程序的健壮性,可以在程序中主动做出判断,并给用户友好的提示。

》在实际开发中,遇到分支情况时,通常会综合运用if选择结构的各种形式及switch选择结构来解决。

Java中的选择结构(二)的更多相关文章

  1. Java中的选择结构

    1.if选择结构 if选择结构是根据条件判断之后再做处理的一种语法结构 语法: if(条件){ 代码块 //条件成立之后要执行的代码,可以是一条语句,也可以是一组语句 } if后小括号里的条件是一个表 ...

  2. Java初认识--Java中的语法结构

    Java中的语法结构(程序流程控制) Java的语法结构有四种: 1.顺序结构. 顺序结构很简单,就是按顺序执行,输出就可以了. 2.判断结构. 判断结构的一个代表性的语句是if:if语句有三种格式体 ...

  3. Java开发知识之Java中的Map结构

    Java开发知识之Java中的Map结构 一丶Map接口 Map没有实现Collection接口,提供的是Key 到Value的映射. Map中.不能包含相同的Key,每个Key只能映射一个Value ...

  4. Java中的集合(十二) 实现Map接口的WeakHashMap

    Java中的集合(十二) 实现Map接口的WeakHashMap 一.WeakHashMap简介 WeakHashMap和HashMap一样,WeakHashMap也是一个哈希表,存储的也是键值对(k ...

  5. JAVA中生成、解析二维码图片的方法

    JAVA中生成.解析二维码的方法并不复杂,使用google的zxing包就可以实现.下面的方法包含了生成二维码.在中间附加logo.添加文字功能,并有解析二维码的方法. 一.下载zxing的架包,并导 ...

  6. vb编程中的选择结构语句的写法

    1996年,Bohra和Jacopin提出了结构化算法的3中种基本结构:顺序结构.选择结构和循环结构 目前已经得到证明,无论多么复杂的程序,都是由上面的3种基本结构中的一种或者多种的组合构成 在此笔者 ...

  7. Java中JVM内存结构

    Java中JVM内存结构 线程共享区 方法区: 又名静态成员区域,包含整个程序的 class.static 成员等,类本身的字节码是静态的:它会被所有的线程共享和是全区级别的: 属于共享内存区域,存储 ...

  8. Java中的集合(二)单列集合顶层接口------Collection接口

    Java中的集合(二)单列集合顶层接口------Collection接口 Collection是一个高度封装的集合接口,继承自Iterable接口,它提供了所有集合要实现的默认方法.由于Iterab ...

  9. JAVA的选择结构(二)

    1.switch选择结构:                        语法:                            switch (key) {                   ...

随机推荐

  1. 0-pyqt介绍

    1.QT 的特点 2.QT的历史 3.搭建pyQT的开发环境 python  pyqt包  pycharm 4.搭建pyQT第一个应用 必须使用两个类:QApplication和QWidget.都在P ...

  2. [gym102770L]List of Products

    有一个很重要的性质:若$a\le b$且$c\le d$,则$ac\le bd$ 根据这一性质,就可以利用单调性$o(n)$求出小于$a_{x}\cdot b_{y}$的数的个数(先要对$a$和$b$ ...

  3. [luogu5666]树的重心

    考虑枚举一个点k,求其为重心的方案数暴力的做法是,将其作为根搜索,设最大子树大小为s1,次大为s2,对割掉的子树分类讨论:1.在子树中,分两种情况(都可以用线段树合并来做) (1)从s1中切掉一棵大小 ...

  4. .Net Core中使用ElasticSearch(二)

    .Net的ElasticSearch 有两个版本,Elasticsearch.Net(低级) 和 NEST(高级),推荐使用 NEST,低级版本的更灵活,水太深 把握不住.有个需要注意,使用的版本号必 ...

  5. 【CSP2019 D1T2】【括号树】

    题面 不再多说,想必大家都看过这个题 思路 我们可以手推几个满足条件的字符串 我们发现在这些字符串里 每个)都与离它最近的(的匹配 所以我们维护树上每个节点到根节点中没用使用过的(的位置(nl[n]) ...

  6. Codeforces 1406E - Deleting Numbers(根分+数论)

    Codeforces 题面传送门 & 洛谷题面传送门 一道个人感觉挺有意思的交互题,本人一开始想了个奇奇怪怪的做法,还以为卡不进去,结果发现竟然过了,而且还是正解( 首先看到这类题目可以考虑每 ...

  7. Codeforces 788E - New task(线段树)

    Codeforces 题目传送门 & 洛谷题目传送门 这是一道 *2900 的 D1E,而且被!我!自!己!搞!出!来!了! 虽然我承认它难度及摆放的位置异常异常虚高,并且就算我到了现场也不可 ...

  8. Codeforces 685C - Optimal Point(分类讨论+乱搞)

    Codeforces 题面传送门 & 洛谷题面传送门 分类讨论神题. 首先看到最大值最小,一眼二分答案,于是问题转化为判定性问题,即是否 \(\exists x_0,y_0,z_0\) 满足 ...

  9. Educational Codeforces Round 89 题解

    昨晚简单 vp 了场比赛找了找状态,切了 5 个题(有一个差点调出来),rk57,还算理想吧,毕竟我已经好久没碰过电脑了( A 签到题不多说,直接输出 \(\min\{a,b,\dfrac{a+b}{ ...

  10. Genscan指南

    Genscan指南 GenScan是一个gene识别软件,主要是通过已知生物的基因结构特征来识别新的基因(parse).所利用的基因特征请参看readme文件. 特点: 只考虑编码蛋白的基因. 模型考 ...