《第3章控制结构精选文档.ppt》由会员分享,可在线阅读,更多相关《第3章控制结构精选文档.ppt(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第3章控制结构本讲稿第一页,共二十六页本章学习目标本章学习目标几种分支语句的使用。几种分支语句的使用。熟练使用三种循环语句进行编程。熟练使用三种循环语句进行编程。能应用嵌套循环语句解决较为复杂的问题。能应用嵌套循环语句解决较为复杂的问题。会使用会使用breakbreak、continuecontinue、returnreturn语句编程。语句编程。掌握方法的定义及调用掌握方法的定义及调用语法错误的调试。语法错误的调试。对对JavaJava程序格式的熟练掌握。程序格式的熟练掌握。本讲稿第二页,共二十六页3.1 选择结构 (1)(1)双分支选择结构:双分支选择结构:if/elseif/else语句
2、用来判定一个条件语句用来判定一个条件(布尔表布尔表达式达式),当条件为真,当条件为真(true)(true)时执行一个操作,条件为假时执行一个操作,条件为假(false)(false)时执行另一个操作。时执行另一个操作。(2)(2)单分支选择结构:省略了单分支选择结构:省略了elseelse的的if if语句在条件为真语句在条件为真时执行一个操作,条件为假时则跳过该操作。时执行一个操作,条件为假时则跳过该操作。(3)(3)多分支选择结构:多分支选择结构:switchswitch语句则是根据表达式的值语句则是根据表达式的值来决定执行许多不同操作中的某一个操作。来决定执行许多不同操作中的某一个操作
3、。本讲稿第三页,共二十六页3.1.1 if语句 1 1if if语句的基本形式语句的基本形式if(if(布尔表达式布尔表达式)语句区块语句区块1 1else else 布尔表达式语句布尔表达式语句区块区块2 2语句区块语句区块1 1 语句区块语句区块2 2布尔表达式语句区块2语句区块1本讲稿第四页,共二十六页3.1.1 if语句2省略了else子句的if语句if(布尔表达式)语句区块 语句区块布尔表达式本讲稿第五页,共二十六页3.1.1 if语句3 3if if语句的嵌套语句的嵌套其形式如下:其形式如下:if(if(布尔表达式布尔表达式1)1)语句区块语句区块1 1else if(else i
4、f(布尔表达式布尔表达式2)2)语句区语句区块块2 2else if(else if(布尔表达式布尔表达式3)3)语句区语句区块块3 3 .else else 语句区块语句区块n+1 n+1 本讲稿第六页,共二十六页4使用if嵌套时的注意事项Java编译器是将else与离它最近的非匹配的if组合在一起,除非用花括号指定不同的匹配方式。本讲稿第七页,共二十六页3.1.2 switch语句其格式如下:其格式如下:switch(switch(表达式表达式)case case 值值1 1:语句区块:语句区块1 1;break;/break;/分支分支1 1 case case 值值2 2:语句区块:语
5、句区块2 2;break;/break;/分支分支2 2 case case 值值n n:语句区块:语句区块n n;break;/break;/分支分支n n default default:语句区块语句区块n+1n+1;/分支分支n+1n+1 本讲稿第八页,共二十六页3.2 循环结构循环语句的作用是反复执行一段程序代码,直到满足终止条件为止。Java语言提供的循环语句有:while语句、do-while语句和for语句。本讲稿第九页,共二十六页3.2.1 while语句while语句的一般形式为:while(布尔表达式)循环体语句区块 循环体语句区块布尔表达式本讲稿第十页,共二十六页3.2.
6、2 dowhile语句do-while语句的一般形式为:do 循环体语句区块 while(布尔表达式);本讲稿第十一页,共二十六页3.2.3 for语句for语句的一般形式为:for(初值表达式;布尔表达式;循环过程表达式)循环体程序语句区块初值表达式布尔表达式循环体语句区块循环过程表达式本讲稿第十二页,共二十六页循环控制要点 1循环控制变量(或循环计数器)的名字,即循环变量名。2循环控制变量的初始值。3每执行一次循环时,循环控制变量的增量(或减量)。4测试循环控制变量的终值条件(即是否继续进行循环)。本讲稿第十三页,共二十六页3.3 跳转控制语句break语句 continue语句 retu
7、rn语句 本讲稿第十四页,共二十六页3.3.1 break语句breakbreak语句通常有不带标号和带标号两种形式:语句通常有不带标号和带标号两种形式:breakbreak;break Lab;break Lab;其中:其中:breakbreak是关键字;是关键字;LabLab是用户定义的标号。是用户定义的标号。breakbreak语句虽然可以独立使用,但通常主要用于语句虽然可以独立使用,但通常主要用于switchswitch结结构和循环结构中,控制程序的执行流程转移。构和循环结构中,控制程序的执行流程转移。本讲稿第十五页,共二十六页3.3.2 continue语句continueconti
8、nue语句只能用于循环结构中,其作用是使循环短路。它语句只能用于循环结构中,其作用是使循环短路。它有下述两种形式:有下述两种形式:continue;continue;continue lab;continue lab;其中:其中:continuecontinue是关键字;是关键字;LabLab为标号。为标号。1 1continuecontinue语句也称为循环的短路语句。在循环结构中,当程序执行语句也称为循环的短路语句。在循环结构中,当程序执行到到continuecontinue语句时就返回到循环的入口处,执行下一次循环,而语句时就返回到循环的入口处,执行下一次循环,而使循环体内写在使循环体内
9、写在continuecontinue语句后的语句不执行。语句后的语句不执行。2 2当程序中有嵌套的多层循环时,为从内循环跳到外循环,可使当程序中有嵌套的多层循环时,为从内循环跳到外循环,可使用带标号的用带标号的continue labcontinue lab语句。此时应在外循环的入口语句前语句。此时应在外循环的入口语句前方加上标号。方加上标号。本讲稿第十六页,共二十六页3.3.3 return语句return语句用于方法的返回上,当程序执行到return语句时,终止当前方法的执行,返回到调用这个方法的语句。Return语句通常位于一个方法体的最后一行,有带参数的和不带参数的两种形式,带参数形式
10、的return语句退出该方法时并返回一个值。本讲稿第十七页,共二十六页3.4 方法方法是类的成员,它与类的成员变量一起被封装在类方法是类的成员,它与类的成员变量一起被封装在类中,并在类中实现。成员方法描述对象所具有的功能中,并在类中实现。成员方法描述对象所具有的功能或操作,反映对象的行为,是具有某种相对独立功能或操作,反映对象的行为,是具有某种相对独立功能的程序模块。它与过去所说的子程序、函数等概念相的程序模块。它与过去所说的子程序、函数等概念相当。一个类或对象可以有多个成员方法,对象通过执当。一个类或对象可以有多个成员方法,对象通过执行它的成员方法对传来的消息作出响应,完成特定的行它的成员方
11、法对传来的消息作出响应,完成特定的功能。成员方法一旦定义,便可在不同的程序段中多功能。成员方法一旦定义,便可在不同的程序段中多次调用,故可增强程序结构的清晰度,提高编程效率。次调用,故可增强程序结构的清晰度,提高编程效率。本讲稿第十八页,共二十六页3.4.1 方法的定义与调用 1 1方法的定义方法的定义方法的声明与实现也可分为两部分:方法声明和方法方法的声明与实现也可分为两部分:方法声明和方法体。声明成员方法的格式如下:体。声明成员方法的格式如下:(参数列表参数列表)throws)throws 本讲稿第十九页,共二十六页2方法的分类从成员方法的来源看,可将成员方法分为:从成员方法的来源看,可将
12、成员方法分为:(1)(1)类库成员方法。这是由类库成员方法。这是由JavaJava类库提供的,用户只需要按照类库提供的,用户只需要按照JavaJava提供的调用格式去使用这些成员方法即可。提供的调用格式去使用这些成员方法即可。(2)(2)用户自己定义的成员方法。这是为了解决用户的特定问题,由用户自己定义的成员方法。这是为了解决用户的特定问题,由用户自己编写的成员方法。程序设计的主要工作就是编写用户自用户自己编写的成员方法。程序设计的主要工作就是编写用户自定义类、自定义成员方法。定义类、自定义成员方法。从成员方法的形式看,可将成员方法分为:从成员方法的形式看,可将成员方法分为:无参成员方法。例如
13、,无参成员方法。例如,void printStar()void printStar()带参成员方法。例如,带参成员方法。例如,int add(int x,int y)int add(int x,int y)本讲稿第二十页,共二十六页3方法的调用方式成员方法的引用可有下述几种方式。成员方法的引用可有下述几种方式。(1)(1)方法语句方法语句 成员方法作为一个独立的语句被引用。例如,程序成员方法作为一个独立的语句被引用。例如,程序Exam3_17.javaExam3_17.java中的中的“add(a,b)add(a,b);”语句就是这种形式。语句就是这种形式。(2)(2)方法表达式方法表达式 成
14、员方法作为表达式中的一部分,通过表达式被引用。例如,程序成员方法作为表达式中的一部分,通过表达式被引用。例如,程序Exam3_17.javaExam3_17.java中的中的“f3=2+add1(f1,f2)f3=2+add1(f1,f2);”语句就是这种形式。语句就是这种形式。(3)(3)方法作为参数方法作为参数 一个成员方法作为另一个成员方法的参数被引用。例如,一个成员方法作为另一个成员方法的参数被引用。例如,语句语句“add(a,add1(f1,f2)add(a,add1(f1,f2);”。更为典型的是,在递归的成员方法中,一个成。更为典型的是,在递归的成员方法中,一个成员方法作为它自身
15、的参数被引用。员方法作为它自身的参数被引用。(4)(4)通过对象来引用通过对象来引用本讲稿第二十一页,共二十六页4引用成员方法时应注意的事项 (1)(1)如果被引用的方法存在于本文件中,而且是本类的方法,则可直如果被引用的方法存在于本文件中,而且是本类的方法,则可直接引用。我们前面列举的例子基本上都是这种情况。接引用。我们前面列举的例子基本上都是这种情况。(2)(2)如果被引用的方法存在于本文件中,但不是本类的方法,则如果被引用的方法存在于本文件中,但不是本类的方法,则要考虑类的修饰符与方法的修饰符来决定是否能引用要考虑类的修饰符与方法的修饰符来决定是否能引用(3)(3)如果被引用的方法不是本
16、文件的方法而是如果被引用的方法不是本文件的方法而是JavaJava类库的方法,则类库的方法,则必须在文件的开头处用必须在文件的开头处用import import 命令将引用有关库方法所需要的信命令将引用有关库方法所需要的信息写入本文件中。息写入本文件中。(4)(4)如果被引用的方法是用户在其他的文件中自己定义的方法,则如果被引用的方法是用户在其他的文件中自己定义的方法,则必须通过加载用户包的方式来引用。必须通过加载用户包的方式来引用。本讲稿第二十二页,共二十六页3.4.2 方法调用时参数的传递可通过如下的格式来引用成员方法:可通过如下的格式来引用成员方法:成员方法名成员方法名成员方法名成员方法
17、名(实参列表实参列表实参列表实参列表)但在引用时应注意下述问题:但在引用时应注意下述问题:(1)(1)对于无参成员方法来说,是没有实参列表的,但方法名后的括弧不能省略。对于无参成员方法来说,是没有实参列表的,但方法名后的括弧不能省略。(2)(2)对于带参数的成员方法来说,实参的个数、顺序以及它们的数据类型必须与形式对于带参数的成员方法来说,实参的个数、顺序以及它们的数据类型必须与形式参数的个数、顺序以及它们的数据类型保持一致,各个实参间用逗号分隔。实参名参数的个数、顺序以及它们的数据类型保持一致,各个实参间用逗号分隔。实参名与形参名可以相同也可以不同。与形参名可以相同也可以不同。(3)(3)实
18、参也可以是表达式,此时一定要注意使表达式的数据类型与形参的数据类型实参也可以是表达式,此时一定要注意使表达式的数据类型与形参的数据类型相同,或者使表达式的类型按相同,或者使表达式的类型按JavaJava类型转换规则达到形参指明的数据类型。类型转换规则达到形参指明的数据类型。(4)(4)实参变量对形参变量的数据传递是实参变量对形参变量的数据传递是“值传递值传递”,即只能由实参传递给形参,而不,即只能由实参传递给形参,而不能由形参传递给实参。程序中执行到引用成员方法时,能由形参传递给实参。程序中执行到引用成员方法时,JavaJava把实参值拷贝到一个临把实参值拷贝到一个临时的存储区时的存储区(栈栈
19、)中,形参的任何修改都在栈中进行,当退出该成员方法时,中,形参的任何修改都在栈中进行,当退出该成员方法时,JavaJava自动清除栈中的内容。自动清除栈中的内容。本讲稿第二十三页,共二十六页3.4.3 方法体中的局部变量(1)(1)在方法体内可以定义本方法所使用的变量,这种变在方法体内可以定义本方法所使用的变量,这种变量是局部变量,它的生存期与作用域是在本方法内。量是局部变量,它的生存期与作用域是在本方法内。离开本方法则这些变量被自动释放。离开本方法则这些变量被自动释放。(2)(2)方法体内定义变量时,变量前不能加修饰符。方法体内定义变量时,变量前不能加修饰符。(3)(3)局部变量在使用前必须明确赋值,否则编译时会出错。局部变量在使用前必须明确赋值,否则编译时会出错。(4)(4)在一个方法内部,可以在复合语句中定义变量,这些变在一个方法内部,可以在复合语句中定义变量,这些变量只在复合语句中有效,这种复合语句也被称为程序块。量只在复合语句中有效,这种复合语句也被称为程序块。本讲稿第二十四页,共二十六页3.4.4 方法递归调用直接引用间接引用本讲稿第二十五页,共二十六页3.5 应用实例1、百钱买百鸡问题百钱买百鸡问题 2、分蜂蜜问题分蜂蜜问题 本讲稿第二十六页,共二十六页
限制150内