《Java程序设计教程》课件第三章:流程控制结构_第1页
《Java程序设计教程》课件第三章:流程控制结构_第2页
《Java程序设计教程》课件第三章:流程控制结构_第3页
《Java程序设计教程》课件第三章:流程控制结构_第4页
《Java程序设计教程》课件第三章:流程控制结构_第5页
已阅读5页,还剩31页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本章学习目标:●

掌握程序控制语句的基本语法结构●

掌握分支语句和循环语句的应用●

理解并熟练使用程序跳转语句第三章流程控制结构

程序是由一系列指令组成的,这些指令称为语句。Java中有许多语句,有些语句用来控制程序的执行流程,即执行顺序,这样的语句称为“控制语句”。Java中的控制语句有以下三大类:

●分支语句:if和switch语句;

●循环语句:while、do-while和for循环语句;

●转移语句:break、continue和return语句。第1节part语句概述1.方法调用语句如:System.out.println("Hello");2.表达式语句由一个表达式构成一个语句,即表示式尾加上分号。比如赋值语句:x=23;3.复合语句可以用{}把一些语句括起来构成复合语句,如:{z=123+x;System.out.println("Howareyou");}语句概述语句概述4.空语句一个分号也是一条语句,叫做空语句。5.控制语句控制语句分为条件分支语句、开关语句和循环语句。6.package语句和import语句package语句和import语句与类、对象有关,将在以后的章节中讲解。Java里的语句可分为以下六类:第2节part分支结构分支结构是根据表达式条件的成立与否,决定执行哪些语句的结构。其作用是让程序根据具体情况有选择性地执行代码。Java中提供的分支语句有以下两个:●if条件语句●switch开关语句分支结构本节概述3.2.1if条件语句if条件语句是最常用的分支结构,其语法格式如下:if(条件表达式1){语句块1}[elseif(条件表达式2){语句块2}][elseif(条件表达式3){语句块3}]......[else{语句块n}]if条件语句其中,if语句需要注意以下几点:●所有条件表达式的结果为布尔值(true或false);●当“条件表达式1”为true时执行if语句中的“语句块1”部分;●当“条件表达式1”为false时,执行elseif语句,继续向下判断条件表达式,哪个条件表达式成立,执行相应的语句块;●当所有条件表达式为false时执行else语句中的“语句块n”部分。●elseif可以有多个;●[]括起来的elseif、else可以省略。根据语法规则,可以将if语句分为如下三种形式。3.2.1if条件语句1.if语句

if语句是单条件单分支语句,即根据一个条件来控制程序执行的流程。if语句的语法格式如下:if(条件表达式){

语句块

}

需要注意的是,在if语句中,其中的语句块如果只有一条语句,{}可以省略不写,但为了增强程序的可读性,最好不要省略。

if语句的流程图如图3.1所示。在if语句中,关键字if后面的一对小括号()内的条件表达式的值必须为boolean类型,当值为true时,则执行紧跟着的语句块,否则,结束当前if语句的执行。3.2.1if条件语句

下述案例通过将变量a,b,c数值按大小顺序进行互换(从小到大排列),示例了if语句的使用,代码如下所示。【代码3.1】IfExample.javapackagecom;publicclassIfExample{

publicstaticvoidmain(String[]args){

inta=9,b=5,c=7,t=0;

if(b<a){

t=a;

a=b;

b=t;

}

if(c<a){

t=a;

a=c;

c=t;

}

if(c<b){

t=b;

b=c;

c=t;

}

System.out.println("a="+a+",b="+b+",c="+c);

}}程序运行结果如下:a=5,b=7,c=93.2.1if条件语句2.if-else语句

if-else语句是单条件双分支语句,即根据一个条件来控制程序执行的流程。if-else语句的语法格式如下:if(条件表达式){

语句块}else{

语句块}if-else语句的流程图如图3.2所示。在if-else语句中,关键字if后面小括号()内的条件表达式的值必须为boolean类型,当值为true时,则执行紧跟着的语句块,否则,则执行关键字else后面的语句块,结束当前if-else语句的执行。3.2.1if条件语句下述案例通过判断某一年是否是闰年,示例了if-else语句的使用,代码如下所示。【代码3.2】IfElseExample.javapackagecom;publicclassIfElseExample{

publicstaticvoidmain(String[]args){ intyear=2018; //判断2018年是平年还是闰年 if((year%4==0&&year%100!=0)||(year%400==0)){

System.out.println("2018年是闰年");

}else{

System.out.println("2018年是平年");

}

}}程序运行结果如下:2018年是平年3.2.1if条件语句3.if-elseif-else语句if-elseif-else语句是多条件分支语句,即根据多个条件来控制程序执行的流程。if-elseif-else语句的语法格式如下:if(条件表达式){

语句块}elseif(条件表达式){

语句块}elseif(条件表达式){

语句块}......//可以有多个elseif语句else{

语句块}…if-elseif-else语句的流程图如图3.3所示。3.2.1if条件语句下述案例示例了if-elseif-else语句的应用,代码如下所示。【代码3.3】IfElseIfExample.javapackagecom;publicclassIfElseIfExample{ publicstaticvoidmain(String[]args){ intscore=87; //判断g学生成绩的等级 if(score>=90){ System.out.println("优秀"); }elseif(score>=80){ System.out.println("良好"); }elseif(score>=70){ System.out.println("中等"); }elseif(score>=60){ System.out.println("及格"); }else{ System.out.println("不及格"); } }}程序运行结果如下:良好3.2.2switch开关语句switch开关语句是由一个控制表达式和多个case标签组成,与if语句不同的是,switch语句后面的控制表达式的数据类型只能是byte、short、char、int四种类型,boolean类型等其他类型是不被允许的,但从Java7开始允许枚举类型和String字符串类型。Switch开关语句switch语句的语法格式如下:switch(控制表达式){casevalue1:

语句1; break;casevalue2:

语句2; break;......casevalueN:

语句N; break;[default:默认语句;]}其中,switch语句需要注意以下几点:●控制表达式的数据类型只能是byte、short、char、int、String和枚举类型;●case标签后的value值必须是常量,且数据类型必须与控制表达式的值保持一致;●break用于跳出switch语句,即当执行完一个case分支后,终止switch语句的执行;只有在一些特殊情况下,当多个连续的case值要执行一组相同的操作时,此时可以不用break。●default语句是可选的。用在当所有case语句都不匹配控制表达式值时,默认执行的语句。3.2.2switch开关语句switch语句执行顺序是先对控制表达式求值,然后将值依次匹配case标签后的value1,value2,……,valueN,遇到匹配的值就执行对应的语句块,如果所有的case标签后的值都不能与控制表达式的值匹配,则执行default标签后的默认语句块。switch语句的执行流程图如图3.4所示。3.2.2switch开关语句下述案例通过判断学生成绩的等级,示例了switch开关语句的使用,代码如下所示。【代码3.4】SwitchExample1.javapackagecom;publicclassSwitchExample1{

publicstaticvoidmain(String[]args){

intscore=67;

switch(score/10){//使用switch判断g的等级

case10:

case9:

System.out.println("优秀");break;

case8: System.out.println("良好");break;

case7: System.out.println("中等");break;

case6: System.out.println("及格");break;

default: System.out.println("不及格"); } }}上述代码中先计算“score/10”,因score是整数,所以结果也是整数,即取整数部分值,例如:67/10=6;case10后面没有语句,将向下进入到case9中,即当值为10或9时都输出“优秀”。程序运行结果如下:及格3.2.2switch开关语句

从Java7开始增强了switch语句的功能,允许控制表达式的值是Stirng字符串类型的变量或表达式,下述案例示例了switch增强功能。【代码3.5】SwitchExample2.javapackagecom;publicclassSwitchExample2{

publicstaticvoidmain(String[]args){

//声明变量season是字符串,注意JDK版本是7以上才能支持

Stringseason="夏天";

//执行swicth分支语句

switch(season){

case"春天": System.out.println("春暖花开.");break;

case"夏天":

System.out.println("夏日炎炎.");break;

case"秋天":

System.out.println("秋高气爽.");break;

case"冬天":

System.out.println("冬雪皑皑.");break;

default:

System.out.println("季节输入错误");

}}}程序运行结果如下:夏日炎炎.第3节part循环结构

循环结构是根据循环条件,要求程序反复执行某一段代码,直到条件终止为止的程序控制结构。循环结构由四部分组成:

●初始化部分。开始循环之前,需要设置循环变量的初始值。

●循环条件。循环条件是一个含有循环变量的布尔表达式,循环体的执行需要循环条件来控制,每执行一次循环体都需要判断该表达式的值,用于决定循环是否继续。

●循环体。需要反复执行的语句块,可以是一条语句,也可以是多条语句。

●迭代部分。改变循环变量值的语句。Java语言中提供的循环语句有以下三种:

●

for循环

●

while循环

●

do-while循环循环结构本节概述3.3.1for循环for循环是最常见的循环语句,其语法结构非常简洁,一般用在知道循环次数的情况下,即固定循环。for循环的语法结构如下:for([初始化表达式];[条件表达式];[迭代表达式]){

循环体}

其中:

●初始化表达式只在循环开始之前执行一次;

●初始化表达式、条件表达式以及迭代表达式都可以省略,但分号不能省,当三者都省略时将成为一个无限循环(死循环);

●在初始化表达式和迭代表达式中可以使用逗号隔开多个语句。for循环3.3.1for循环for循环的执行顺序是首先执行初始化表达式;接下来判断条件表达式是否为true,如果为true,则执行循环体中的语句,紧接着执行迭代表达式,完成一次循环,进入下一次循环;如果条件表达式为false,则终止循环。注意,下次循环依然要先判断条件表达式是否成立,并根据判断结果进行相应操作。for循环执行流程图如图3.5所示3.3.1for循环下述案例使用for循环求1~100整数和,示例了for循环的应用,代码如下所示。【代码3.6】ForExample1.javapackagecom;publicclassForExample1{

publicstaticvoidmain(String[]args){

//使用for循环求1~100的和

intsum=0;

for(inti=1;i<=100;i++){

sum+=i;

}

System.out.println("1~100的和是:"+sum);

}}

上述代码中,for循环语句将循环体执行100次,每次循环将当前i的值加到sum中,当循环终止时,sum的值就是1~100的和。程序运行结果如下:1~100的和是:50503.3.1for循环for循环可以嵌套,下述案例使用嵌套的for循环打印九九乘法表,代码如下所示。【代码3.7】ForExample2.javapackagecom;publicclassForExample2{

publicstaticvoidmain(String[]args){

//嵌套的for循环打印九九乘法表

//第一个for控制行

for(inti=1;i<=9;i++){

//第二个for控制列,即每行中输出的算式

for(intj=1;j<=i;j++){

//输出j*i=n格式,例如2*3=6

System.out.print(j+"*"+i+"="+i*j+"");

}

//换行

System.out.println();

}

}}

上述代码中,第二个for循环体中的输出语句使用的是System.out.print(),该语句输出内容后不换行;而第一个for循环体中的使用System.out.println()直接换行3.3.2while循环while循环语句的语法格式如下:while(条件表达式){

循环体

迭代部分}while循环while循环语句的执行顺序是先判断条件表达式是否为true,如果为true,则执行循环体内的语句,再进入下一次循环;如果条件表达式为false,则终止循环。while循环的执行流程图如图3.6所示3.3.2while循环下述案例使用while循环实现求1~100整数和,代码如下所示。【代码3.8】WhileExample.javapackagecom;publicclassWhileExample{ publicstaticvoidmain(String[]args){ //使用while循环求1~100的和 intsum=0; inti=1; while(i<=100){ sum+=i; i++; } System.out.println("1~100的和是:"+sum); }}

上述代码中,在while循环体的最后一个语句是i++,属于循环结构的迭代部分,进行循环变量的增丽运算,如果没有这条语句,则会出现死循环。程序运行结果如下:1~100的和是:50503.3.3do-while循环do-while循环与while循环类似,只是while循环要先判断后循环,而do-while循环则是先循环后判断,do-while循环至少会循环一次。

do-while循环的语法格式如下:do{

循环体

迭代部分}while(条件表达式);do-while循环do-while循环的执行顺序是先执行一次do语句块,然后再判断条件表达式是否为true,如果为true,则进入下一次循环;如果为false,则终止循环。do-while循环的执行流程图如图3.7所示。3.3.3do-while循环下述案例使用do-while循环实现求1~100整数和,代码如下所示。【代码3.9】DoWhileExample.javapackagecom;publicclassDoWhileExample{ publicstaticvoidmain(String[]args){ //使用do-while循环求1~100的和 intsum=0; inti=1; do{ sum+=i; i++; }while(i<=100); System.out.println("1~100的和是:"+sum); }}程序运行结果如下:1~100的和是:5050第4节part转移语句Java语言没有提供goto语句来控制程序的跳转,此种做法提高了程序的可读性,但也降低了程序的灵活性。为了弥补这种不足,Java语言提供一些转移语句来控制分支和循环结构,使程序员更方便地控制程序执行的方向。Java语言提供了三种转移语句:break语句、continue语句和return语句。转移语句本节概述3.4.1break语句break语句用于终止分支结构或循环结构,其主要用在以下3种情况:●在switch语句中,用于终止case语句,跳出switch分支结构。●在循环结构中,用于终止循环语句,跳出循环结构。●与标签语句配合使用从内层循环或内层程序块中退出。break语句3.4.1break语句下述案例示例了使用break语句终止循环,代码如下所示。【代码3.10】BreakExample1.javapackagecom;publicclassBreakExample1{publicstaticvoidmain(String[]args){inti=1;for(;i<=10;i++){if(i==5){ System.out.println("找到目标,结束循环!"); //终止循环 break; } System.out.println(i);//打印当前的i值}//打印终止循环的i值System.out.println("终止循环的i="+i);}}程序运行结果如下:1234找到目标,结束循环!终止循环的i=53.4.1break语句

在嵌套的循环语句中,break语句不仅可以终止当前所在的循环,还可以直接结束其外层的循环,此时需要在break后跟一个标签,该标签用于识别一个外层循环。下述案例示例了带标签的break语句的使用,代码如下所示。【代码3.11】BreakExample2.javapackagecom;publicclassBreakExample2{publicstaticvoidmain(String[]args){ //外层循环,outer作为标识符 outer:for(inti=0;i<5;i++){ //内层循环 for(intj=0;j<3;j++){ System.out.println("i的值为:"+i+"j的值为:"+j); if(j==1){ //跳出outer标签所标识的循环。 breakouter; } } }}}

上述代码在外层for循环前增加“outer:”作为标识符,当breakouter时,则跳出它所标志的外层循环。程序运行结果如下:i的值为:0j的值为:0i的值为:0j的值为:13.4.2continue语句continue的功能与break有点类似,区别是continue只是忽略本次循环体剩下的语句,接着进入到下一次循环,并不会终止循环;而break则是完全终止循环。continue

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论