资源预览内容
第1页 / 共30页
第2页 / 共30页
第3页 / 共30页
第4页 / 共30页
第5页 / 共30页
第6页 / 共30页
第7页 / 共30页
第8页 / 共30页
第9页 / 共30页
第10页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第第3章章 程序控制语句程序控制语句 程序控制语句程序控制语句 本章要点本章要点n目标目标n掌握:掌握:ifif语句。语句。n掌握:掌握:switch语句和循环语句。语句和循环语句。n理解:理解:break、 continue和和 return的用法。的用法。n重点重点n掌握:能熟练使用三种常用的控制语句。掌握:能熟练使用三种常用的控制语句。n难点难点n理解:循环语句的执行过程。理解:循环语句的执行过程。程序控制语句程序控制语句 3.1 3.1 选择语句选择语句n程序控制语句用于控制程序中各语句的执行顺序。程序控制语句用于控制程序中各语句的执行顺序。nJava提供的流程控制语句有选择语句、循环语句、跳转语句等。提供的流程控制语句有选择语句、循环语句、跳转语句等。n 3.2.1 简单简单if条件语句条件语句n简单简单if条件语句只在条件为真时执行,如图条件语句只在条件为真时执行,如图2-1 if 语句流程图所语句流程图所示其语法如下:示其语法如下: if(条件条件) 语句语句(块块); n 图图2-1 if 语句流程图语句流程图条件条件 语句语句(块块)TrueFalse程序控制语句程序控制语句 3.1 3.1 选择语句选择语句n若布尔表达式的值为真,则执行块内语句。若布尔表达式的值为真,则执行块内语句。if (score=60) system.out.println(“你及格了你及格了”);if (score=60) System.out.println(“你及格了你及格了”);elseSystem.out.println(“你没有及格你没有及格”);程序控制语句程序控制语句 3.1 3.1 选择语句选择语句n3.1.3 if嵌套语句嵌套语句nif或或ifelse语句中的语句可以是任意合法的语句中的语句可以是任意合法的Java语句语句包括其包括其他他if或或if-else语句。内层的语句。内层的if语句称为嵌套在外层语句称为嵌套在外层if语句中。内层语句中。内层if语句又可以包含另一个语句又可以包含另一个if语句,事实上,嵌套的深度没有限制。语句,事实上,嵌套的深度没有限制。 if(Score60)System.out.println(不及格不及格);elseif(Score80) System.out.println(及格及格);else if(Score90) System.out.println(良好良好); else System.out.println(优秀优秀:);程序控制语句程序控制语句 3.1 3.1 选择语句选择语句n前面的前面的if语句与下述语句等价:语句与下述语句等价:if(score60) System.out.println(不及格不及格);else if (score80) System.out.println(及格及格);else if (score90) System.out.println(良好良好);else System.out.println(优秀优秀);n事实上事实上,这是多重选择这是多重选择if语句比较好的书写风格。这个风格可以避语句比较好的书写风格。这个风格可以避免深层缩进,并使程序容易阅读。免深层缩进,并使程序容易阅读。n注意:注意:else子句与同一块中离得最近的子句与同一块中离得最近的if子句相匹配。子句相匹配。程序控制语句程序控制语句 3.1 3.1 选择语句选择语句n3.1.4 switch语句语句nswitch语句根据表达式的结果来执行多个可能操作中的一个,它的语法语句根据表达式的结果来执行多个可能操作中的一个,它的语法形式如下:形式如下: switch (表达式表达式) case 常量常量1: 语句语句1; break;case 常量常量2: 语句语句2 ; break; case 常量常量n: 语句语句n ; break;default: 缺省处理语句缺省处理语句;nswitch语句中的每个语句中的每个“case 常量:常量:”称为一个称为一个case子句,代表一个子句,代表一个case分支的入口。分支的入口。switch语句的流程图如图语句的流程图如图2-3所示。所示。 图图2-3 switch语句流程图语句流程图程序控制语句程序控制语句 3.1 3.1 选择语句选择语句n在在Java中,可以用中,可以用switch语句对操作进行分组,例如:语句对操作进行分组,例如:switch(Score)case 1:System.out.println (优秀优秀);break;case 2:System.out.println (优良优良);break;case 3:System.out.println (良好良好);break;case 4:System.out.println (及格及格);break;case 5:System.out.println (不及格不及格);break; default:nswitch要检查变量要检查变量Score的值,它的每个值是特定值用的值,它的每个值是特定值用“case value:”来表示或者是使用缺省从句用来表示或者是使用缺省从句用“default:”来表示。来表示。n注意程序中使用了关键字注意程序中使用了关键字break,它的作用就是在得到与某个特定值相,它的作用就是在得到与某个特定值相匹配之后执行代码完成的时候跳出匹配之后执行代码完成的时候跳出switch条件。条件。程序控制语句程序控制语句 nJava的的3种循环语句有种循环语句有while、do-while和和for循环语句。循环语句。n3.2.1 while循环语句循环语句n它的执行过程如图它的执行过程如图2-4所示,其的语法如下:所示,其的语法如下:while (条件)(条件)循环体循环体n说明:说明:n循环条件是一个布尔表达式,它必须放在括号中。循环条件是一个布尔表达式,它必须放在括号中。n在循环体执行前一定先计算循环条件,在循环体执行前一定先计算循环条件,n若条件为真,执行循环体,若条件为真,执行循环体,n若条件为假,整个循环中断并且程序控制转移到若条件为假,整个循环中断并且程序控制转移到while循环后的语句循环后的语句。 图图2-4 while语句流程图语句流程图条件条件循环体循环体falsetrue3.2 3.2 循环语句循环语句程序控制语句程序控制语句 3.2 3.2 循环语句循环语句n例如用例如用while循环打印循环打印“Welcome !”一百次。一百次。int i=0;while (i100)System.out.println(“Welcome!”);i+;ni的初值为的初值为0。循环检查(。循环检查(i100)是否为真,若真,则执行循环体,打)是否为真,若真,则执行循环体,打印消息印消息“Welcome!”并使并使i加加1。这将重复执行,直到(。这将重复执行,直到(i100)为止。)为止。若(若(i100)变为假,循环中断并执行循环体之后的第一条语句。)变为假,循环中断并执行循环体之后的第一条语句。程序控制语句程序控制语句 3.2 3.2 循环语句循环语句n3.2.2 do-while循环语句循环语句ndo循环其实就是循环其实就是while循环的变体。它的执行过程如图循环的变体。它的执行过程如图2-5所示,其所示,其的语法如下:的语法如下:do/循环体;循环体;while(条件);(条件);n注意:注意:n在在do循环中循环中while条件判断之后需要添加一个分号。条件判断之后需要添加一个分号。图图2-5do语句流程图语句流程图条件条件循环体循环体falsetrue程序控制语句程序控制语句 3.2 3.2 循环语句循环语句ndo-while的循环流程是和的循环流程是和while循环不一样的,二者的主要差别在于循循环不一样的,二者的主要差别在于循环条件和循环体的计算顺序不同。例如,可将例环条件和循环体的计算顺序不同。例如,可将例3-1改写如下:改写如下:public class TestDo public static void main(String args) int data; int sum=0; do data=ReadInt(); sum+=data; while (data!=0); System.out.println(“The sum is”+sum); 程序控制语句程序控制语句 3.2 3.2 循环语句循环语句n【例例3-1】源程序源程序TestWhile.java,读入一系列整数并计算其和,读入一系列整数并计算其和,输入输入0则表示输入结束。则表示输入结束。nclass TestWhilenpublic static void main(String args)throws java.io.IOExceptionnint i;nint sum=0;nSystem.out.println(请输入一个整数,请输入一个整数,0代表结束代表结束);ndonSystem.out.print(你输入的是:你输入的是:);ndoni=System.in.read();nwhile(i=n|i=r);ni=i-0;nsum=sum+i;nwhile(i!=0);nSystem.out.println(sum=+sum);nn程序控制语句程序控制语句 3.2 3.2 循环语句循环语句n3.2.3 for循环语句循环语句nfor循环语法如下:循环语法如下: for(循环变量初始化(循环变量初始化;循环条件循环条件;调整语句)调整语句)循环体;循环体;nfor循环语句以关键字循环语句以关键字for开始,然后是由括号括住的三个控制元开始,然后是由括号括住的三个控制元素,循环体括在大括号内。控制元素由分号分开,控制循环体的素,循环体括在大括号内。控制元素由分号分开,控制循环体的执行次数和终止条件。执行次数和终止条件。 程序控制语句程序控制语句 3.2 3.2 循环语句循环语句n下面的下面的for循环可以打印循环可以打印Welcome!100次。次。int i;for (i=0;i100;i+)System.out.println(Welcome!);n第一个元素为第一个元素为i=0,初始化循环变量。循环变量跟踪循环体的执行,初始化循环变量。循环变量跟踪循环体的执行次数,调整语句修改它的值。次数,调整语句修改它的值。n第二个元素为第二个元素为i100,是布尔表达式,用作循环条件。,是布尔表达式,用作循环条件。n第三个元素是调整控制变量的语句,循环变量的值最终必须使循环第三个元素是调整控制变量的语句,循环变量的值最终必须使循环条件变为假。条件变为假。n另外,循环变量也可以在另外,循环变量也可以在for循环中进行说明和初始化。上例还可循环中进行说明和初始化。上例还可写成下列语句:写成下列语句:for (int i=0; i100; i+) System.out.println(Welcome!);程序控制语句程序控制语句 3.2 3.2 循环语句循环语句n例例3-2源程序源程序TestSum.java,使用,使用for循环计算从循环计算从1到到100的数列的数列的和。的和。/本程序利用本程序利用for循环计算循环计算1到到100的和的和 public class TestSum public static void main(String args) int sum=0; for (int i=1;i=100;i+) sum+=i;System.out.println(The sum is +sum); 程序控制语句程序控制语句 3.2 3.2 循环语句循环语句n运行结果运行结果n程序分析程序分析n第第6句组成的句组成的for循环,变量循环,变量i从从1开始,每次增加开始,每次增加1,当,当i大于大于100时时循环终止。循环终止。程序控制语句程序控制语句 3.2 3.2 循环语句循环语句n例例3-3:源程序源程序TestMulTable.java,使用嵌套的,使用嵌套的for循环打印九九乘法表。循环打印九九乘法表。 /本程序打印九九乘法表本程序打印九九乘法表 public class TestMulTable public static void main(String args) System.out.print( ); for (int j=1;j=9;j+) System.out.print( +j); System.out.println( ); for (int i=1;i=9;i+) System.out.print(i+ ); for ( j=1;j=i; j+) if (i*j10) System.out.print( +i*j); else System.out.print( +i*j); System.out.println(); 程序控制语句程序控制语句 3.2 3.2 循环语句循环语句n运行结果运行结果n程序分析程序分析n第第56句组成的第一个循环显示数句组成的第一个循环显示数1到到9;n第第8句句19句是一个嵌套的句是一个嵌套的for循环,对每个外循环的循环变量循环,对每个外循环的循环变量i,内,内循环的循环变量循环的循环变量j都要逐个取都要逐个取1,2,.,9,并显示出并显示出i*j的值;的值;n第第1316句的句的if语句使结果右对齐。语句使结果右对齐。程序控制语句程序控制语句 程序控制语句程序控制语句 3.3 3.3 与程序有关的其他语句与程序有关的其他语句n3.3.1 break语句语句nbreak有两种形式有两种形式break和和 break 标号。标号。n一种是不带语句标号的一种是不带语句标号的break,用于立刻终止包含它的最内层循环。,用于立刻终止包含它的最内层循环。n另一种是带标号的另一种是带标号的break,用于多重循环中,跳出它所指定的块,并从,用于多重循环中,跳出它所指定的块,并从紧跟该块的第一条语句处执行。紧跟该块的第一条语句处执行。n例如:下面例如:下面break语句中断内层循环并把控制立即转移到外层循环后语句中断内层循环并把控制立即转移到外层循环后的语句。的语句。 outer:for(int i=1; i10; i+) inner: for(int j=1; j50) break outer; System.out.println(i*j); n如果把上述语句中的如果把上述语句中的break outer换成换成break,则,则break语句终止内语句终止内层循环,仍然留在外层循环中。如果想退出外循环,就要使用带标号层循环,仍然留在外层循环中。如果想退出外循环,就要使用带标号的。的。程序控制语句程序控制语句 3.3 3.3 与程序有关的其他语句与程序有关的其他语句n例例3-4:源程序源程序TestBreak.java,测试,测试break语句对程序结果的影语句对程序结果的影响响。 /本程序测试本程序测试break语句语句 public class TestBreak public static void main(String args) int sum=0; int item=0; while(item=6) break; System.out.println(The sum is +sum); 程序控制语句程序控制语句 3.3 3.3 与程序有关的其他语句与程序有关的其他语句n运行结果运行结果n程序分析程序分析n第第611句的句的while循环中,如果不用循环中,如果不用9行的行的if语句,本程序计算从语句,本程序计算从1到到5的和。如果有了的和。如果有了if语句,总和大于等于语句,总和大于等于6时循环终止。时循环终止。 程序控制语句程序控制语句 3.3 3.3 与程序有关的其他语句与程序有关的其他语句n3.3.2 continue语句语句ncontinue语句用来结束本次循环,跳过循环体中下面尚未执行的语语句用来结束本次循环,跳过循环体中下面尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。句,接着进行终止条件的判断,以决定是否继续循环。n例例3-5源程序源程序“TestContinue.java”,测试,测试continue语句。语句。 /本程序测试本程序测试continue语句语句 public class TestContinue public static void main(String args) int sum=0; int i=0; while (i4) return;System.out.println(it wont be executed);class Returnpublic static void main(String args)returnDemo test=new returnDemo();test.guess(5);程序控制语句程序控制语句 3.3 3.3 与程序有关的其他语句与程序有关的其他语句n运行结果运行结果n程序分析程序分析n当在当在main()函数中调用函数中调用guess(5)使得执行了)使得执行了if语句在此就返回了,语句在此就返回了,执行不到执行不到returnDemo类的第类的第7句,所以只输出这一句。句,所以只输出这一句。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号