《Java程序设计-4-流程控制hdm.pptx》由会员分享,可在线阅读,更多相关《Java程序设计-4-流程控制hdm.pptx(47页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、JavaJava程序设计程序设计第四章第四章 流程控制流程控制2学习目标学习目标理解程序控制的概念理解程序控制的概念运用条件运用条件语句,使用句,使用if,switch来控制程序的来控制程序的不同不同执行路径行路径掌握掌握for、while和和do句型句型结构控制程序的循构控制程序的循环执行行理解并能理解并能应用用break和和continue调整程序中的整程序中的流程控制流程控制结构。构。理解分支和循理解分支和循环的影响的影响语句范句范围理解理解变量的生存范量的生存范围理解并使用断言理解并使用断言对程序程序进行行调试3程序程序程序表程序表现为完成某个功能完成某个功能(目目标)而而编写的指令集
2、写的指令集合。合。构成程序的基本元构成程序的基本元结构是构是顺序、分支和循序、分支和循环u在整体上,程序运行是按照事先在整体上,程序运行是按照事先编写的指令写的指令(语句句)从前到后的从前到后的顺序序执行,但在行,但在执行的行的过程中,程中,经常会遇到基于不同条件的决策来常会遇到基于不同条件的决策来执行不同的指令,行不同的指令,抑或重复抑或重复执行事先定行事先定义的指令来达到某种目的,的指令来达到某种目的,但但总体上程序体上程序总是是顺序序执行的。行的。4一个例子一个例子编写一个程序,声明写一个程序,声明3个整型个整型变量,用来保存量,用来保存3个学生的考个学生的考试分数,分数,计算他算他们的
3、平均分的平均分(float类型型)并并输出。出。5进一步的一步的u如果某个学生的成如果某个学生的成绩低于低于60分,分,则不参与平均分不参与平均分计算。算。6在在进一步一步u如果有如果有50个学个学生的成生的成绩已已经保保存在一个整型数存在一个整型数组中,同中,同样基于基于上面上面规则来来计算算这批学生的平均批学生的平均分。分。74.1 4.1 句、块和空白句、块和空白构成构成Java程序的最小程序的最小单位是位是类,而,而类则是由属是由属性和方法构成。方法代表了某个具体的能力,性和方法构成。方法代表了某个具体的能力,具体的一个方法就是由具体的一个方法就是由为完成某个功能而完成某个功能而编写写
4、的若干条的若干条语句句组成。成。84.1.1 4.1.1 语句语句在在Java编程程语言中,言中,语句是一行由分号句是一行由分号(;)终止的止的代代码,它是一个完整的可,它是一个完整的可执行行单元。例如:元。例如:utotals=a+b+c+d+e+f;与下式相同与下式相同utotal=a+b+c+u d+e+f;9在在Java中,主要有以下的中,主要有以下的语句句类型型 u声明声明语句句uint a=0;/声明了一个整型声明了一个整型变量量uStudent stu;/声明了一个声明了一个类型是型是Student的的对象象u表达式表达式语句句 u赋值表达式,自增表达式、方法表达式,自增表达式、
5、方法调用、用、对象象创建都可以和分号一建都可以和分号一起构成起构成“表达式表达式语句句”uSystem.out.println(“Welcome”);/输出字符串出字符串ua=Math.abs(-3.1);/返回返回绝对值uvalue=100;/为变量量赋值ua+;/a自增自增uStudent stu=new Student(“张华”);/创建一个建一个Student类的的实例,例,实例引用名例引用名为stuu控制控制语句句104.1.2 4.1.2 语句块语句块一个一个块(block)或一个复合或一个复合语句是以上括号和句是以上括号和下括号下括号 为边界的界的语句集合;句集合;u块语句也被用
6、来句也被用来组合属于某个合属于某个类的的语句。句。u语句句块可被嵌套。可被嵌套。/a block 语句句 uu x=y+1;u y=x+1;u 11/类声明所包含的声明所包含的块语句句 upublic class MyDate u int day;u int month;u int year;u12/一个嵌套一个嵌套块语句的例子句的例子while(i large)/循环语句快开始,用循环语句快开始,用表示表示 a=a+i;if(a=max)/判断语句快开始,用判断语句快开始,用表示表示 b=b+a;a=0;/判断语句块结束,用判断语句块结束,用表示表示 /循环语句快结束,用循环语句快结束,用表
7、示表示134.1.34.1.3空白空白在源代在源代码元素之元素之间允允许空白,空白的数量不限。空白空白,空白的数量不限。空白(包括空格、包括空格、tabs和新行和新行)可以改善源代可以改善源代码的的视觉感受。感受。u uint x;ux=23+54;u u u int xu x =23 +54;u 144.2 4.2 顺序结构顺序结构顺序序结构构u程序程序语句句间最最简单的的结构关系是构关系是顺序序结构,也就构,也就是是语句是按照它句是按照它们在方法中出在方法中出现的先后的先后顺序逐一序逐一被被执行。行。public class Swap public static void main(Str
8、ing args)int a=10,b=20;int t=0;t=a;a=b;b=t;System.out.println(a=+a);System.out.println(b=+b);154.34.3选择结构选择结构程序控制可以定程序控制可以定义为对程序程序语句的句的执行行顺序序进行的行的规定。定。Java提供了条件提供了条件语句在两种或更多的情况做句在两种或更多的情况做出出选择,根据情况,根据情况执行不同的程序行不同的程序语句;句;164.3.1 4.3.1 条件判断与决策条件判断与决策 1 if,else语句句简单的的单分支分支语句句uif(布布尔表达式表达式)u语句或句或块;u例如例如
9、uif(score 60)u System.out.println(“下次努力哦下次努力哦!”);u174.3.1 4.3.1 条件判断与决策条件判断与决策(cont.)(cont.)简单的双分支的双分支语句句uif(布布尔表达式表达式)u语句或句或块;uelse u语句或句或块;u例如例如uif(score 60)u System.out.println(“下次努力哦下次努力哦!”);uelseu System.out.println(“恭喜你通恭喜你通过考考试!”);u18expBAFT选择结构选择结构194.3.1 4.3.1 条件判断与决策条件判断与决策(cont.)(cont.)嵌套
10、的嵌套的 if,elseuif(布布尔表达式表达式1)u语句或句或块;uelse if(布布尔表达式表达式2)u语句或句或块;uelseu 语句或句或块;u 20例如例如if(score 60)System.out.println(“下次努力哦下次努力哦!”);else if(score 2)if(y 2)int z=x+y;System.out.println(“z is”+z);else System.out.println(“x is”+x);224.3.1 4.3.1 条件判断与决策条件判断与决策(cont.)(cont.)2 switch语句句uswitch语句允句允许程序程序员更多
11、情况下更多情况下选择不同不同的程序的程序逻辑,当情况,当情况发生生时,按照事先准,按照事先准备好的方法好的方法执行。行。switch语句的句法是:句的句法是:switch(expr1)case expr2:statements;break;case expr3:statements;break;default:statements;23char gender;/性别性别.switch(gender)case F:case f:System.out.println(”女性女性“);break;case M:case m:System.out.println(”男性男性“);break;24表达式
12、的表达式的类型型u在在switch(expr1)语句中,句中,expr1必必须与与int类型是型是赋值兼容的;兼容的;byte,short或或char类型可被升型可被升级;不允;不允许使用浮点或使用浮点或long表表达式。达式。u从从7开始,增加了开始,增加了String类型。型。u在在switch(expr1)语句中,句中,expr1也可以是枚也可以是枚举类型型upublic enum Month JANUARY,FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY,AUGUST,SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER breakubreak的
13、作用是停止的作用是停止switch的的执行,退出,行,退出,执行行switch代代码段段后的程序。后的程序。u如果没有如果没有break语句作句作为某一个某一个case代代码段的段的结束句,束句,则程序程序的的执行将行将继续到下一个到下一个case,而不,而不检查case表达式的表达式的值。25TA1Fexp=1TA2Fexp=2TAnFexp=n多分支结构多分支结构26课堂练习课堂练习指出指出输出出结果果 x=2;y=3;if(x 2)if(y 2)int z=x+y;System.out.println(“z is”+z);else System.out.println(“x is”+x)
14、;27课堂练习课堂练习(c.)(c.)执行下列行下列switch语句后句后y是多少?是多少?u x=3;u switch(x+3)u case 6:y=1;u default:y+=1;u switchswitch中的中的defaultdefault本本质是一种特殊匹配是一种特殊匹配u变量或表达式的量或表达式的值不能与任何不能与任何case值相匹配相匹配时,可可选缺省符(缺省符(default)指出了)指出了应该执行的程序代行的程序代码。位置位置udefault 语句一般在句一般在switch语句的最后。句的最后。注意注意u如果匹配到了如果匹配到了default,并且,并且default后后还
15、有其他有其他的的case,则继续执行,且忽略是否匹配行,且忽略是否匹配2829课堂练习课堂练习(c.)(c.)有一个函数如下,根据指定的有一个函数如下,根据指定的x,输出出y值uy=X x12X-1 1=x=10写出程序,根据给出的百分制成绩,输出成绩等写出程序,根据给出的百分制成绩,输出成绩等级级A A、B B、C C、D D、E E,90,90分以上为分以上为A A,80808989为为B B,70707979为为C C,60606969为为D D,6060分以下为分以下为E E。30课堂练习课堂练习(c.)(c.)编写一个程序,根据命令行参数将写一个程序,根据命令行参数将对应的的mon、
16、tue、wed、thu、fri、sat、sun分分别输出出为星星期一、星期二期一、星期二.星期日,如:星期日,如:uJava WeekDay monu星期一星期一31思考题思考题如何提高多分支下的程序如何提高多分支下的程序执行效率?行效率?324.44.4循环循环循循环语句使句使语句或句或块的的执行得以重复行得以重复进行。行。Java编程程语言支持三种循言支持三种循环构造构造类型:型:for,while和和do 循循环。ufor和和while循循环是在是在执行循行循环体之前体之前测试循循环条条件件udo 循循环是在是在执行完循行完循环体之后体之后测试循循环条件。条件。u这就意味着就意味着for
17、和和while循循环可能可能连一次循一次循环体都体都未未执行,行,而而do循循环将至少将至少执行一次循行一次循环体。体。33FSTexp直到型循环直到型循环当型循环当型循环TexpSF34for循循环的句法是:的句法是:u for(init_expr;boolean testexpr;alter_expr)ustatement or blocku u 例如:例如:ufor(int i=0;i 10;i+)uSystem.out.println(i=+i);u 35while循循环的句法:的句法:uwhile (布布尔表达式表达式)u语句或句或块uint i=0;while(i 10)Syste
18、m.out.println(i=+i);i+;System.out.println(Finally!);36do循循环的句法是:的句法是:udo u语句或句或块;uwhile(布布尔测试)int i=0;do System.out.println(i=+i);i+;while(i 10);System.out.println(Finally!);37思考题思考题怎么决定使用哪怎么决定使用哪类循循环?38循环的嵌套循环的嵌套在一个循在一个循环体内又包含了另一个完整的循体内又包含了另一个完整的循环结构,成构,成为嵌套循嵌套循环。如。如:while(循环条件)(循环条件)语句;语句;while(循环
19、条件)(循环条件)语句;语句;语句;语句;394.4.4 4.4.4 跳转跳转下列下列语句可被用在更深句可被用在更深层次的控制循次的控制循环语句中:句中:ubreak 标注;注;ucontinue标注;注;ulabel:语句;句;Label:u被用来被用来标识循循环构造的复合构造的复合语句。句。break语句句u被用来从被用来从switch语句、句、for语句等循句等循环语句的句的块中退出到中退出到预先先设定的定的label处。当程序运行到。当程序运行到break 标注注处时,程序跳出整个循程序跳出整个循环体的体的结尾尾处。continue语句句u被用来略被用来略过并跳到循并跳到循环体的体的结
20、尾。当程序运行到尾。当程序运行到continue 标注注处时,程序跳至,程序跳至标识外循外循环的下一次的下一次循循环开始开始处继续执行。行。40loop:while(true)for(int i=0;i 100;i+)switch(c=System.in.read()case-1:case n :/跳到最后处跳到最后处break loop;./end for /end while 41课堂练习课堂练习下面的循下面的循环程序程序输出出结果是什么?果是什么?public class ShowErrors public static void main(String args)for(int i=0
21、;i10;i+);System.out.println(i+4);42课堂练习课堂练习(c.)(c.)编写一个程序,求出写一个程序,求出1+2+3+100的和并的和并输出。出。求出求出100200间的所有素数。的所有素数。43用下面的方法声明,用下面的方法声明,编写一个写一个java方法,返回接收方法,返回接收字符数字符数组中中连续字符字符块的个数:的个数:upublic static int countRuns(char A)444.54.5变量的作用域变量的作用域每个每个变量都有一个作用域,就是量都有一个作用域,就是说这个个变量在量在哪个程序段中起作用。哪个程序段中起作用。变量的作用域从它
22、被声明量的作用域从它被声明时开始直到遇到声明开始直到遇到声明变量的代量的代码段的段的结束符束符“”为止。止。只能在只能在变量的作用域内量的作用域内访问它。如果在作用域它。如果在作用域之外之外访问变量,量,编译器将器将产生一个生一个错误。作用域的范作用域的范围u成成员变量量u局部局部变量量u方法参数方法参数45变量的作用域变量的作用域(c.)(c.)public class VariableScope public static void main(String args)int i=10;int k=10;System.out.println(i=+i);System.out.println(k=+k);System.out.println(i=+i);System.out.println(k=+k);46变量的作用域变量的作用域(c.)(c.)可以注意到,不同作用域内的变量互相不干扰,通常变量是当前最近作用域内定义的该变量,如果要引用更大作用域外的变量,则需要增加限定符,例如我们已经看到过的this.演讲完毕,谢谢观看!