java学习课件 第四章 流程控制.ppt
Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系第四章第四章 流程控制流程控制n4.1 语句和复合语句n4.2 顺序结构n4.3 分支结构n4.4 循环结构n4.5 循环结构中的跳转语句Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系public class JavaDemo10public static void main(String args)/*String str1=Hello,;String str2=World!;String str3=str1+str2;System.out.println(str3);*/int i=10;int j=20;/所有的数据都会自动向字符串转型System.out.println(i+j=+i+j);提问提问Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系4.1 4.1 语句和复合语句语句和复合语句p语句可以是以分号“;”结尾的简单语句。p也可以是用一对花括号“”括起来的复合语句。System.out.println(“Hello World”);x=a+8;y=x0?x:-x;s=TextBox1.getText();a=Integer.parseInt(s);Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系4.1 4.1 语句和复合语句语句和复合语句p一个复合语句可以嵌套另一个复合语句。pJava不允许在两个嵌套的复合语句内声明两个同名的变量。如:如下面的代码在编译时将会出错。如下面的代码在编译时将会出错。public static void public static void main(Stringmain(String argsargs)intint a;a;intint b;b;intint a;/a;/错误,因变量错误,因变量a a前面已定义前面已定义 Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系4.1 4.1 语句和复合语句语句和复合语句p 另外在程序设计过程中经常要用到注释语句。Java允许在源程序文件中添加注释(comment),以增加程序的可读性,系统不会对注释的内容进行编译。Java有三种形式的注释。1单行注释:/单行注释 2多行注释:/*单行或多行注释 */3文件注释:/*文件注释 */Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系4.2 4.2 顺序结构顺序结构顺序结构是最简单的流程控制结构。顺序结构就是程序从上到下一行一行执行的结构,中间没有判断和跳转,直到程序结束。如图4.1所示的即为结构化程序设计中的顺序流程控制结构。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系4.2 4.2 顺序结构顺序结构语句1图4.1 顺序结构语句2Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系4.3 4.3 分支结构分支结构p分支结构又称为选择结构,是一种在两种以上的多条执行路径中选择一条执行的控制结构,这里所说的执行路径是指一组语句。p 通常分支结构要先做一个判断,根据判断的结果来决定选择哪一条执行路径。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系4.3.1 4.3.1 分支结构分支结构1.第一种应用的格式为双路条件选择,其格式如下:if if(条件表达式条件表达式)语句序列语句序列elseelse 语句序列语句序列 Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系双路条件选择其程序控制结构如图4.2所示。图4.2 双路条件选择结构FT条件语句序列2语句序列1Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系4.3.1 4.3.1 分支结构分支结构2.第二种应用的格式为单路条件选择,其格式如下:if if(条件表达式条件表达式)语句序列语句序列Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系单路条件选择其程序控制结构如图4.3所示。FT条件语句序列图4.3 单路条件选择结构Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系4.3.1 4.3.1 分支结构分支结构【例4.1】找出三个整数中的最大值和最小值/app4_1.java if语句的应用public class app4_1 public static void main(String args)int a=1,b=2,c=3,max,min;if(ab)max=a;else max=b;if(cmax)max=c;System.out.println(“Max=”+max);min=ab?a:b;min=csweight*1.1)|(weight=90)grade=A;else if(testscore=80)grade=B;else if(testscore=70)grade=C;else if(testscore=60)grade=D;else grade=E;System.out.println(“评定成绩为:”+grade);Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系补充:if语句的嵌套p当if语句中又包含若干个if语句时,则构成了if 语句嵌套的情形。if(表达式表达式1)if(表达式表达式2)语句序列语句序列1;else 语句序列语句序列2;else if(表达式表达式3)语句序列语句序列3;else 语句序列语句序列4;即当即当if语句中(语句中(else语句中)的执行语句又是语句中)的执行语句又是if语句时,语句时,则构成了则构成了if 语句嵌套的情形。采用嵌套结构实质上是为语句嵌套的情形。采用嵌套结构实质上是为了进行多分支选择了进行多分支选择.p表现形式:内嵌的if语句内嵌的else语句注意:当采用省略else形式时,要注意 if 和 else 的配对规则。用else 与前面最接近它且未配对的if 配对。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系课堂提问课堂提问if(a!=b)if(ab)System.out.println(AB);else System.out.println(Ab)System.out.println(AB);else System.out.println(AB);Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系小结小结 1.if1.if语句有语句有3 3种结构。种结构。2.if2.if语句也可以嵌套,内嵌的语句也可以嵌套,内嵌的ifif语句最好包括语句最好包括elseelse语语句,因为句,因为elseelse语句总是与它上面最靠近的语句总是与它上面最靠近的ifif语句配对。语句配对。3.3.在一般情况下尽量少使用在一般情况下尽量少使用ifif语句的嵌套结构。语句的嵌套结构。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系1:由一函数:由一函数 -1 (x0)y=编一程序,输入一个编一程序,输入一个x值,输出值,输出y值值作业作业算法:算法:输入输入 x 若若x0 y=-1 否则:否则:若若x=0 y=0 否则:否则:y=1 输出输出 yJava2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系作业(续)作业(续)2.P72 习题13.实现判定闰年的程序。实现判定闰年的程序。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系4.3.24.3.2switch switch 选择语句选择语句在在多多重重条条件件选选择择的的情情况况下下,可可以以使使用用if if else else 结结构构来来实实现现,但但是是,使使用用多多分分支支开开关关语语句句会会使使程程序序更更为为精精练练、清清晰晰。switchswitch语语句句就就是是多多分分支支的的开开关关语句,常用于多重条件选择。语句,常用于多重条件选择。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系4.3.2switch4.3.2switch语句语句s witchs witch语句是一个多分支选择语句,也叫开关语句。语句是一个多分支选择语句,也叫开关语句。switchswitch(变量名称或表达式)(变量名称或表达式)case case 符合数字或字符符合数字或字符:语句块语句块1 1;break;break;case case 符合数字或字符符合数字或字符:语句块语句块2 2;break;break;default:default:语句块语句块3 3;Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系public class JavaDemo07public class JavaDemo07 public static void public static void main(Stringmain(String argsargs)char c=a;char c=a;switch(cswitch(c)case a:case a:System.out.printlnSystem.out.println(条件条件1 1满足。满足。););/表示退出表示退出switchswitch语句语句break;break;case b:case b:System.out.printlnSystem.out.println(条件条件2 2满足。满足。););break;break;case c:case c:System.out.printlnSystem.out.println(条件条件3 3满足。满足。););break;break;default:default:/如果一切条件都不满足了,则执行如果一切条件都不满足了,则执行defaultdefault语句语句System.out.printlnSystem.out.println(没有任何条件满足。没有任何条件满足。););Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系例例:假假设设用用0 0、1 1、2.62.6分分别别表表示示星星期期日日、星星期期一一.星星期期六六。现现输输入入一一个个数数字字,输输出出对对应应的的星星期期几几的的英英文文单单词词。如如果果输输入入3 3,输出,输出“WednesdayWednesday”。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系作业作业给出一百分制成绩,要求输出成绩等级:90 分以上为 A 等,8089 分为 B 等,7079 分为 C 等,6069 分为 D 等,60 分以下为 E 等。(注意分数段的表示方法,用switch语句实现该功能。)Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系 4.4 循环结构循环结构循环结构是在一定条件下,反复执行某段程序的控制结构,被反复执行的语句序列称为循环体。在Java语言中循环结构是由循环语句来实现的。Java中的循环语句共有三种:while语句、do-while语句和for语句。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系 4.4.1 while语句while语句的一般语法结构如下:while(条件表达式)循环体Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系循环体可以是单个语句,也可以是复合语句块。while语句的执行过程是先判断条件表达式的值,若为真,则执行循环体,循环体执行完之后,再转向到条件表达式重新计算与判断条件表达式;直到当计算出的条件表达式为假时,跳过循环体执行while语句后面的语句,循环终止。4.4.1 while语句Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系while语句的循环执行过程如图4.5所示。TF图4.5 while循环语句的流程条件表达式循环体Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系public class TestWhile1public static void main(String args)/循环控制变量赋初始值/循环条件/循环体(含改变循环控制变量值的语句)用whie语句编程实现输出20个*Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系课堂练习:用whie语句编程实现输出你名字的十遍。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系public class TestWhile3public static void main(String args)/循环控制变量赋初始值/循环条件/循环体(含改变循环控制变量值的语句)用whie语句编程实现123100Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系计算Fibonacci序列的前16项。Fibonacci序列的通项公式为:Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系/app4_4.java while语句的应用public class App4_4 public static void main(String args)final int MAX=15;/定义常量MAX=15 int i=0,j=1,k=1;while(k=MAX)System.out.print(+i+j);i=i+j;/计算Fibonacci序列中的下一个数 j=i+j;/计算Fibonacci序列中的下一个数 k=k+2;/用于改变循环的条件表达式的值 System.out.println();【例例4.4】续续计算Fibonacci序列的前16项。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系程序运行结果:0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610【例例4.4】续续 4.4.1 while语句Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系 4.4.2 do-while4.4.2 do-while语句语句do-while语句的一般语法结构如下:do 循环体while(条件表达式);/注意此处;号不能少Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系do-whiledo-while循环语句的结构如图循环语句的结构如图4.64.6所示。所示。FT图4.6do-while循环语句的流程条件表达式循环体Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系public class TestDoWhile1public static void main(String args)用do whie语句编程实现123100Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系while 和 do-while 循环的比较int i=11;while(i =10)s+=i;i+;i=11;dos+=i;i+;while(i =10);Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系小结小结1.循环结构用于描述一些重复执行的语句。2.循环的执行过程。3.常见的循环包括3部分:循环开始的条件,例如:num=1num=1循环的条件,例如:num6num6改变循环的条件,例如:num+num+4.4.注意注意whilewhile和和dodo while while的区别的区别Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系作业:作业:1.计算并输出1-3+5-7+-99+101的值2.从键盘读入一整数n(n=10),计算n的阶乘n!(n!=1 2 3 n),并将结果输出。3.打印出所有的“水仙花数”。“水仙花数”是指一个3位数,其各位数字立方之和等于其数本身。例如,153是一个“水仙花数”,因为153135333。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系4.4.3 for4.4.3 for循环语句循环语句for循环语句的基本使用格式如下:for(表达式,条件表达式,表达式2)循环体Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系forfor循环语句的执行过程如图循环语句的执行过程如图4.74.7所示。所示。FT图4.7 for循环结构的流程条件表达式表达式1循环体表达式2Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系求1到10的累加和。本例演示了for语句的两种使用方法。public class TestFor1 public static void main(String args)int i,n=10,s=0;for(i=1;i1;i-)/从10到1进行累加求和 s+=i;System.out.print(i+”+”);/输出数i和加号“+”System.out.println(i+”=”+(s+i);/输出结果 该程序的执行结果如下:该程序的执行结果如下:Sum=1+Sum=1+10=55+10=55Sum=10+9+8+7+6+5+4+3+2+1=55Sum=10+9+8+7+6+5+4+3+2+1=55Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系4.4.4 4.4.4 多重循环多重循环如果循环语句的循环体内又有循环语句,则称多重循环,也称循环嵌套。常用的有二重循环和三重循环。在实现手段上即可以是相同循环语句嵌套,也可以两个不同的循环构成嵌套结构。下面举例说明。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系真真真真外循环初始条件外循环初始条件内循环初始条件内循环初始条件内循环体内循环体外循环条件外循环条件假假内循环条件内循环条件假假内循环循环条件内循环循环条件外循环循外循环循环条件环条件循环结束循环结束二重二重循环循环嵌套嵌套结构结构执行执行流程流程 Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系导入双重循环:输出如下图形,如何编程实现导入双重循环:输出如下图形,如何编程实现Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系public class DoubleLoop1 public static void main(String args )for(int i=1;i=7;i+)/外循环用来控制行数 for(int k=1;k=i;k+)/内循环用来每行1的个数 System.out.print(1);System.out.println();Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系素数是指除1和自身外,不能被其他数整除的数。显然最小的素数是2,其余偶数均不是素数。对于一个奇数k,使用3 之间的每个整数进行测试,如果找到一个整数j能除尽k,则k不是素数;而只有测试完3 范围中的所有整数都不能除尽k,才能确定k是素数。程序如下:求求100以内的素数。以内的素数。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系 /app4_12.java 循环嵌套的应用循环嵌套的应用public class app4_12 public static void main(String args)final int MAX=100;/定义常量定义常量MAX=100 int j,k,n;System.out.println(“2”+MAX+”之间的所有素数为:之间的所有素数为::”);System.out.print(“2t”);/2是第一个素数,不需测试直接输出是第一个素数,不需测试直接输出 n=1;/n累计素数的个数累计素数的个数 k=3;/k是被测试的数,从最小奇数是被测试的数,从最小奇数3开始测试,所有偶数不需测试开始测试,所有偶数不需测试 do /外层循环,从外层循环,从3到到100进行素数测试进行素数测试 j=3;/用用j去除待测试的数去除待测试的数 Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系 while(jMath.sqrt(k)&(k%j!=0)/内层循环内层循环 j+;/若若jMath.sqrt(k)System.out.print(k+“t”);n+;if(n%10=0)System.out.println();/每行输出每行输出10个个数数 k=k+2;/测试下一个奇数测试下一个奇数 while(kMAX);System.out.println(“n共有共有【”+n+”】个素数个素数”);Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系程序运行结果如下:程序运行结果如下:2 2100100之间的所有素数为:之间的所有素数为:2 3 5 7 11 13 17 19 23 292 3 5 7 11 13 17 19 23 2931 37 41 43 47 53 59 61 67 7131 37 41 43 47 53 59 61 67 7173 79 83 89 9773 79 83 89 97共有共有【2525】个素数个素数【例例4.10】续续Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系课堂练习:打印如下图案课堂练习:打印如下图案*Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系提问:提问:*打印如下图左的图案:需在图右的基础上如何修改?打印如下图左的图案:需在图右的基础上如何修改?*Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系小结:三种结构的转化关系:三种结构的转化关系:do 语句语句while(表达式表达式);表达式表达式1;While(表达式表达式2)语句语句 表达式表达式3;for(表达式表达式1;表达式;表达式2;表达式;表达式3)语句语句语句语句while(表达式表达式)语句语句Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系小结:小结:选择三种循环的一般思路:选择三种循环的一般思路:如果循环次数已知,用如果循环次数已知,用for如果循环次数未知,用如果循环次数未知,用while如果循环体至少要执行一次,用如果循环体至少要执行一次,用do-while只是思路,不是定律只是思路,不是定律Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系三种结构的转化关系举例:三种结构的转化关系举例:i=1;do printf(“i=%dn”,i);i+;while(i5);i=1;while(i5)printf(“i=%dn”,i);i+;for(i=1;i5;i+)printf(“i=%dn”,i);i=1;while(i5)printf(“i=%dn”,i);i+;i+;Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系作业:作业:1.1.课本课本P73P73的第六题的第六题2.2.课本课本P73P73的第七题的第七题3.3.求求1!+2!+1!+2!+10!+10!4.4.打印输出九九乘法表。打印输出九九乘法表。5.5.有一分数序列有一分数序列2/1,3/2,5/3,8/5,13/8求出这求出这个数列的前个数列的前20项之和。项之和。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系作业:作业:(选做)计票器。假设一次选举中有(选做)计票器。假设一次选举中有3 3名候选人,名候选人,2020人人投票(投票(1 1人人1 1票,且只能选择票,且只能选择1 1名候选人)请用循环结构名候选人)请用循环结构实现一个计票器,统计每名候选人的得票数。在程序实现一个计票器,统计每名候选人的得票数。在程序设计中,可以考虑给候选人编号为设计中,可以考虑给候选人编号为1 1、2 2、3 3,投票时输,投票时输入相应数字则表示投了该候选人入相应数字则表示投了该候选人1 1票,如果输入的数字票,如果输入的数字不为不为1/2/31/2/3,则表示是无效票,不予统计。,则表示是无效票,不予统计。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系1.“百马百担”问题:有100匹马,驮100担货:大马驮3担,中马驮2担,两匹小马驮一担,问有大、中、小马各多少?2.从3个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。编写程序,输出所有可能的组合。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系4.5 循环中的跳转语句循环中的跳转语句循环中的跳转语句可以实现循环执行过循环中的跳转语句可以实现循环执行过程中的流程转移。在程中的流程转移。在switchswitch语句中,我们所语句中,我们所使用过的使用过的breakbreak语句就是一种跳转语句。为了语句就是一种跳转语句。为了提高程序的可靠性和可读性,提高程序的可靠性和可读性,JavaJava语言不支语言不支持无条件跳转的持无条件跳转的gotogoto语句,但是语句,但是JavaJava语言提语言提供了三种无条件转移语句:供了三种无条件转移语句:returnreturn,breakbreak和和continuecontinue。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系4.5.1 break4.5.1 break语句语句breakbreak语句的作用是使程序的流程从一个语语句的作用是使程序的流程从一个语句块内部跳转出来,如从句块内部跳转出来,如从switchswitch语句的分支中语句的分支中跳出,或从循环体内部跳出,并将控制权交给跳出,或从循环体内部跳出,并将控制权交给循环语句或分支语句后面的语句。循环语句或分支语句后面的语句。breakbreak语句的语句的格式如下:格式如下:break break 标号标号;Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系4.5.2 continue语句语句 continuecontinue语句必须用在循环结构中,它的格式是:语句必须用在循环结构中,它的格式是:continue continue 标号标号;这个标号应该定义在程序中某一循环语句的前面,这个标号应该定义在程序中某一循环语句的前面,用来标志这个循环结构,标号的命名应该符合用来标志这个循环结构,标号的命名应该符合JavaJava标识符的规定。它使程序直接转入标号标明的循环标识符的规定。它使程序直接转入标号标明的循环层次。层次。Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系提问:读程,指出以下程序的运行结果提问:读程,指出以下程序的运行结果public class BreakLoop1 public static void main(String args )int num=5;for(num=1;num5;num+)System.out.println(num1=+num);System.out.println(-);for(num=1;num5;num+)if(num=3)break;System.out.println(num2=+num);System.out.println(-);for(num=1;num5;num+)if(num=3)continue;System.out.println(num3=+num);Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系答案答案Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系课堂练习;课堂练习;1.求1到200之间的所有偶数之和,要求用continue语句实现Java2 程序设计基础程序设计基础 信息学院计算机技术系信息学院计算机技术系4.5.3 return语句语句returnreturn语句用来使程序从方法中返回,并为语句用来使程序从方法中返回,并为方法返回一个值。方法返回一个值。returnreturn语句的格式如下:语句的格式如下:return return 返回值;返回值;如果如果returnreturn语句未出现在子方法中,则执行语句未出现在子方法中,则执行子方法的最后一条语句后自动返回到主方法。子方法的最后一条语句后自动返回到主方法。