第7章不仅仅是表达式——Java中的语句•7.1程序的结构化设计•7.2具体情况具体分析——if判断语句•7.3更多的分支选择——switch语句•7.4懒人的福音——循环语句•7.5每人执行一次——for循环语句•7.6更方便使用的foreach循环•7.7while和do-while循环•7.8break和continue语句•7.9当一个不再够用——循环也可以嵌套•7.10慧眼识英才——哪种循环合适你?•7.11小结•7.12习题7.1程序的结构化设计•7.1.1顺序结构(sequencestructure)•7.1.2选择结构(selectionstructure)•7.1.3循环结构(iterationstructure)7.1.1顺序结构(sequencestructure)顺序结构是这三种当中最简单的一种。它所表示的仅仅是逐步按照预先设定的步骤来完成要做的事情。流程图可以让我们以一种直观地方式来认识抽象的计算机程序。图7.1中的流程图所表示的就是顺序结构的程序,从图中可以看到,它总共只有4个步骤。图7.1顺序结构程序设计的流程图STARTSTEP2STOPSTEP1START放进去大象STOP打开冰箱门带上冰箱门7.1.2选择结构(selectionstructure)•所谓的选择结构就是说在程序的执行过程当中,会遇到有“选择”的情况。针对不同的情况,不同的条件来作出判断,然后选择不同的处理方法。图7.2选择结构程序设计的流程图。图7.2STEP3CONDITIONSTARTSTATEMENT1STOPSTEP1STATEMENT2truefalse7.1.3循环结构(iterationstructure)循环结构是这三个结构当中最为复杂的一个,它本身包括了前面两个程序结构。在这三个程序设计结构中,顺序结构是最基础的一种,也是最简单,功能最为弱小的。选择结构为程序的流程带来了分支,提高了程序设计的灵活性。循环结构的程序的流程如图7.3所示。图7.3循环结构程序设计的流程图7.2具体情况具体分析——if判断语句•7.2.1初识简单的if语句•7.2.2if…else语句•7.2.3多层if语句的嵌套•7.2.4一个if语句的例子7.2.1初识简单的if语句if判断语句的语法结构:if(判断条件){判断条件为true时的操作代码;}if判断语句的流程图如图7.5所示。图7.5if判断语句的流程图7.2.2if…else语句语句的语法:if(判断条件){判断条件为true时的操作代码;}else{判断条件为false时的操作代码;}图7.7中左边我们给出的是if…else语句的Java代码,右侧是这段代码所对应的流程图。图7.7if…else语句及其流程图7.2.3多层if语句的嵌套if嵌套结构:if(condition1){//STATEMENT1…}elseif(condition2){//STATEMENT2…}elseif(condition3){//STATEMENT3…}else{//STATEMENT4…}这个嵌套if语句的流程图如图7.9所示。图7.9连续的if语句嵌套程序的流程图7.2.4if语句的例子(1)用Java中的Calendar类来得到年份之后判断今年是否为闰年(2)对数组中每个学生的成绩划分好等级,并输出结果两个例子请参考Example7_1.java。7.3更多的分支选择——switch语句•7.3.1switch语句的语法•7.3.2switch语句的流程图•7.3.3深入了解switch语句•7.3.4switch语句的例子7.3.1switch语句的语法switch语句的语法格式:switch(选择表达式){case选择值1:表达式值等于选择值1时要执行的程序;break;case选择值2:表达式值等于选择值2时要执行的程序;break;case选择值3:表达式值等于选择值3时要执行的程序;break;default:当表达式的值不等于前面所有值时执行的程序;}7.3.2switch语句的流程图先来看看下面的图7.10吧,里面是switch语句的一个流程图。这个流程图所对应的Java代码如下所示:switch(expr){case1:STATEMENT1;break;case2:STATEMENT2;break;case3:STATEMENT3;break;default:STATEMENT4;}7.3.3深入了解switch语句1.选择表达式switch后面括号中选择表达式值的类型为char,byte,short或int。2.switch语句中的break在switch语句当中break其实是可选的。如果两个选择值之间没有break语句,那么前一种情况在执行完之后Java也不会从switch语句当中跳出来。仍然会继续按照代码的顺序依次执行下去,不会因为遇到新的选择值而停止。如果switch中没有出现break语句的话,则Java程序会从对应选择值开始一直执行到switch的结束。3.switch语句中的defaultdefault的作用也是“断后”。如果前面所有的选择值都不等于选择表达式的值,则程序会执行default后面的语句。和前面的else…if嵌套结构中最后的else相同,default语句也是可选的。如果没有default语句,当所有选择值均不匹配选择表达式时Java程序将什么也不做,直接跳出switch语句。就像if语句中的条件表达式值为false一样。7.3.4switch语句的例子前面只一个switch就说了这么多内容,大家可能都看累了也没彻底搞清楚这个switch到底有多少需要注意的地方。不过,它的用法还是非常简单的,我们作为初学者,最主要的任务还是把这个搞清楚。能使用switch语句来解决程序中的问题就可以啦!至于其它的内容,大家可以在日后的学习和编程工作当中自己一边试一边慢慢体会,知识与经验都是这么一点一滴积累起来的哦!好啦,也不用多说什么了,来看看我们的例子吧!文件名:Example7_2.java7.4懒人的福音——循环语句7.4.1我们不需比高斯聪明——编程计算1+2+….+1007.4.2给我一双慧眼吧——发现隐藏的循环规律7.4.1我们不需比高斯聪明——编程计算1+2+….+100如果我们使用一般的表达式来计算这个结果需要将表达式写成下面这个样子:intresult=1+2+3+4+5+…+100;或者使用累加的运算符+=也可以将程序写成下面这个形式:intsum=0;sum+=1;sum+=2;...sum+=100;intresult=sum;图7.13直接用Java来计算1+2+…+100的代码量7.4.2给我一双慧眼吧——发现隐藏的循环规律为了让大家更深地了解如何将重复的代码转换为循环结构,我们在图7.14中将两种程序的流程图列了出来。可以从这个对比中找出它们的对应情况。图7.147.5每人执行一次——for循环语句•7.5.1for循环语句的语法•7.5.2for循环语句的流程图•7.5.3for循环语句的例子7.5.1for循环语句的语法for循环语句的语法结构:for(设置循环变量初始值;循环继续执行的条件;改变循环变量的值){循环体语句;}7.5.2for循环语句的流程图我们在图7.15中给大家画了for循环语句的流程图。这幅图表示了一个非常简单的for语句在Java程序中的执行流程。图7.15循环继续条件START循环体语句STOP初始化循环变量truefalse修改循环变量i=100STARTsum+=i;STOPi=1;truefalsei++;7.5.3for循环语句的例子•for循环语句的语法和流程图都给大家介绍过啦,如果不举例子说明一下,可能大家理解得不会太深刻。我们在这个例子中给大家演示了如何用Java程序中的for循环语句来实现计算从1累加到100,然后输出计算的结果。为了说明Java中for语句的一些特性,我们在例子中一共给出了3种不同形式的for循环语句的实现。7.6更方便使用的foreach循环1.foreach语句的语法foreach的语法非常简单哦,比for语句简单多啦!for(对象类型对象名称:对象的数组或集合名称){循环体语句;}2.foreach语句的例子foreach在Java中是个非常简单的语句,它的语法也不复杂。我们也不用举很麻烦的例子,只是给大家看一下分别用for和foreach语句遍历同一个数组的代码就可以啦。在下面的代码当中,首先定义了一个整型的数组score,里面保存的是一些整数。7.7while和do-while循环7.7.1while和do-while循环语句的语法7.7.2while和do-while循环语句的流程图7.7.3while和do-while循环语句的例子7.7.1while和do-while循环语句的语法先来看看这两个语句的语法格式!/*while循环语句的语法格式*/初始化循环变量;while(循环继续条件){循环体语句;改变循环变量的值;}/*do-while循环语句的语法格式*/初始化循环变量;do{循环体语句;改变循环变量的值;}while(循环继续条件);7.7.2while和do-while循环语句的流程图图7.16while循环语句和do-while循环语句的流程图7.7.3while和do-while循环语句的例子•在本节下面的例子当中,我们给大家列出了用while和do-while两个循环语句来解决上节中用for语句来解决的问题——计算从1加到100的结果。在本节和前一节的两个例子当中,我们用Java中的这三个循环语句以不同的方式来做同一件事情,大家可以对比一下这种不同的实现方式。同样这种做法也证明了这三种循环语句的功能是完全可以相互替换的,只是代码的形式不同而已。7.8break和continue语句•7.8.1break和continue语句的流程图•7.8.2break和continue语句的例子7.8.1break和continue语句的流程图这两个语句也许是Java里面语法最简单的语句了,所以我们只是略微提一下就可以。它们的语法如下所示:break;//用于提前终止循环continue;//用于结束当前循环操作,转到下次循环的开始继续执行7.8.2break和continue语句的例子•虽然这两个语句从语法上看着非常简单,不过,它们在循环中的作用可不简单哦!所以我们还是给出个例子来演示一下它们在Java程序中的功能吧。下面这个例子中分别用到了break和continue,它们分别用在当需要循环终止或提前结束当前操作的时候。例子中共有两个情况,首先我们判断一个数是否为素数,然后就是用循环的方式计算学生的平均成绩,在计算成绩之前将不正确的成绩去掉。7.9当一个不再够用——循环也可以嵌套•7.9.1“冒泡”排序与矩阵转置•7.9.2嵌套循环的流程图•7.9.3嵌套循环的例子7.9.1“冒泡”排序与矩阵转置在图7.18中我们图示了对一个包括4个元素的数组进行从小到大排序的过程。图7.187.9.2嵌套循环的流程图此图为嵌套循环流程图7.9.3嵌套循环的例子•循环本身就不是很简单的,遇上嵌套的循环,就更复杂。尤其复杂在循环边界的确定上,也就是“循环继续条件”的判断上面。这需要有很清晰的逻辑,同时最好将循环的边界情况列出,然后再看在判断条件的边界上会出现什么情况。这在嵌套循环当中一定要非常小心啦,不然弄错了会出现很意外的结果哦!好啦,先来看看下面的这个例子吧!7.10慧眼识英才——哪种循环合适你?1.for语句for语句适合用在事先可以确定出循环次数的情况下,或是当遍历一个数组或集合时。比较典型的for语句是要带有循环变量的,这个变量可以作为坐标值或索引值。for循环是在第一次循环之前要对循环条件检查的,所以它的循环体有可能一次都得不到执行。•2.foreach语句•相对于其它3种循环语句而言,foreach语句的使用范围比较小,只