【教学课件】第4章流程控制.ppt
第4章 流程控制,A,B,P,A,B,P,循环体,真,假,假,真,第4章 流程控制,本章要点,理解Java语言中复合语句的使用方法掌握if条件语句的使用方法了解if语句与switch语句间的区别掌握while循环语句的使用方法掌握dowhile循环语句的使用方法掌握for语句的使用方法了解跳转语句的使用,第4章 流程控制,4.1 复合语句4.2 分支结构4.3 循环语句4.4 跳转语句,主要内容,4.1 复合语句,Java语言的复合语句是以整个块区为单位的语句,所以又称块语句。复合语句由开括号“”开始,闭括号“”结束。语句块可以嵌套,嵌套层数无限制定义类时类体必须采用语句块形式 定义方法时方法体必须采用语句块的形式,4.2 分支语句,4.2.1 if条件语句4.2.2 switch多分支语句,4.2.1 if条件语句,1.简单的if条件语句,格式:if(布尔表达式)语句块,1.简单的if条件语句,【例4-1】判断两个数的大小,将结果输出。,int x=12;int y=21;String outer=变量x小于y!;if(x y)outer=变量x大于y!;System.out.println(outer);,2.ifelse语句,格式:,if(表达件)语句块1;else 语句块2;,2.ifelse语句,【例4-2】判断考试成绩是否合格,将结果输出。,int score=90;if(score=60)System.out.println(考试成绩及格!);else System.out.println(考试成绩不及格!);,2.ifelse语句,以条件运算符代替ifelse,if(ab)System.out.println(The larger one is:+a);else System.out.println(The larger one is:+b);,System.out.println(The larger one is:“+(ab)?a:b);,3.ifelse if多分支语句,if(表达式1)语句块1;else if(表达式2)语句块2;,else if(表达式n)语句块n;else 语句块n+1;,3.ifelse if多分支语句,3.ifelse if多分支语句,【例4-3】判断两数大小,将结果输出。,int x=12;int y=21;if(x y)System.out.println(变量x大于y!);else if(x=y)System.out.println(变量x等于y!);else System.out.println(变量x小于y!);,4.2.1 if条件语句练习,给出一个年份,判断它是不是闰年。闰年:能被4整除但不能被100整除,或者能被400整除。,(year%4=0&year%100!=0)|(year%400=0),4.2.1 if条件语句练习,已知一个学生的分数,给出其分数等级。90-100分为A级;80-89分为B级;70-79分为C级;60-69分为D级;0-59分为F级,4.2.1 if条件语句练习,int testscore=76;char grade;if(testscore=90)grade=A;else if(testscore=80)grade=B;else if(testscore=70)grade=C;else if(testscore=60)grade=D;else grade=F;System.out.println(Grade=+grade);,4.2.2 switch选择结构,switch(表达式)case 常量1:语句块1;break;case 常量2:语句块2;break;,case 常量n:语句块n;break;default:语句块n+1;break;,4.2.2 switch选择结构,4.2.2 switch选择结构,已知一个学生的分数,给出其分数等级。90-100分为A级;80-89分为B级;70-79分为C级;60-69分为D级;0-59分为E级,4.2.2 switch选择结构,4.3 循环语句,4.3.1 While语句4.3.2 do/while语句4.3.3 for语句,4.3.1 while语句,while语句的一般形式为:while(表达式)语句块;,false,true,while语句执行过程:首先计算表达式,当表达式的值为true时,执行一次循环体中的语句,重复上述操作到表达式的值为false时退出循环。如果表达式的值在开始时就为false,那么不执行循环体语句直接退出循环。while语句的特点是:先判断表达式,后执行语句。,4.3.1 while语句,4.3.1 while语句,【例4-5】计算从1到100之间所有整数的和,将结果输出。,int i=1;int sum=0;while(i=100)sum+=i+;System.out.println(sum);,4.3.1 while语句,计算存款收益:假设银行中存款10000元,按11.25%的利率,一年后连本带利将变为11125元。你若将此款继续存入银行,试问多长时间就会连本带利翻一番?,do-while语句的特点是先执行循环体,后判断循环条件是否成立,其一般形式为:do 语句块;while(表达式);,4.3.2 do-while循环语句,do-while语句执行过程如下首先执行一次循环体,然后再计算表达式,如果表达式的值为true,则再执行一次循环体,重复上述操作,直到表达式的值为false时退出循环。如果条件在开始时就为false,那么执行一次循环体语句后退出循环。while语句与do/while语句的区别在于前者循环体执行的次数可能是0次,而后循环体执行的次数至少是1次。,4.3.2 do-while循环语句,4.3.2 do-while循环语句,【例4-6】计算从1到100之间所有整数的和,将结果输出。,int i=1;int sum=0;do sum+=i+;while(i=100);System.out.println(sum);,4.3.3 for循环语句,for语句的一般形式为:for(表达式1;表达式2;表达式3)语句块;,1.for语句,1.for语句,1.for语句,【例4-7】计算从1到100之间所有整数的和,将结果输出。,int sum=0;for(int i=1;i=100;i+)sum+=i;System.out.println(sum);,for语句3个表达式均可省,但”;”不能省。省略表达式1。此时应在for语句前面给循环控制变量赋初始值。省略表达式3。此时应在for语句的循环体重改变循环控制变量,否则容易造成死循环。省略所有三个表达式。当for语句中没有表达式2时,编译程序将解释为表达式2为true,循环将无限进行下去。,1.for语句,1.for语句,给定一个整数,输出它所有的因数,int n=28;for(int k=1;k=n;k+)if(n%k=0)System.out.print(k+);,1.for语句,逗号运算符可用在 for 循环控制表达式的初始化和递增两部分。在这两部分中可以存在多个由逗号分隔的语句,这些语句会被依次计算。,foreach语句是for语句的特殊简化版本。语法:,2.foreach语句,foreach语句中的元素变量x,不必对其进行初始化,for(元素变量x:遍历对象obj)引用了x的java语句;,foreach语言的执行过程如下:1)自动指向遍历对象obj中的第一个元素;2)判断该元素是否存在,不存在则结束循环3)把该元素的值赋给元素变量x;4)执行循环体语句块;5)自动指向下一个元素,之后从第(2)开始重复执行。,2.foreach语句,【例4-8】遍历输出一维数组中各元素。,2.foreach语句,int array=1,2,3,4,5;/定义一维数组System.out.println(数组array中元素:);for(int i:array)System.out.print(i+);,4.4 跳转语句,4.4.1 break语句4.4.2 continue语句4.4.3 return语句,4.4.1 break语句,功能跳出循环,不再执行剩余部分适用场合在switch 结构中终止switch语句的执行在for循环及while循环结构中,用于终止break语句所在的最内层循环;与标号一同使用时将跳出标号所标识的循环,4.4.1 break语句,【例4-8】计算从1到100之间所有整数的和,如果和大于1000,则退出循环。,int sum=0;for(int i=1;i1000)break;System.out.println(sum);,4.4.1 break语句,break与label一同使用举例,outer:for(int i=1;i i)break;if(i=6)break outer;System.out.print(i+*+j+=+i*j+);System.out.println();,4.4.2 continue语句,continue语句不带标号的continue语句:终止当前这一轮的循环,跳出本轮循环剩余的语句,直接进入当前循环的下一轮带标号的continue语句:使程序的流程直接转入标号标明的循环层次,4.4.2 continue语句,不带标号的continue语句在while或do-while循环中,会使流程直接跳转至条件表达式在for循环中,会使流程跳转至表达式update-expression,计算并修改循环变量后再判断循环条件,4.4.2 continue语句,简单的continue语句举例,int i;for(i=1;i=10;i+)if(i%5=0)continue;System.out.println(i);System.out.println(i);,4.4.2 continue语句,带标号的continue语句格式如下continue label;标号label应该定义在程序中某一循环语句前面,用来标志这个循环结构,4.4.2 continue语句,九九乘法表,outer:for(int i=1;i10;i+)for(int j=1;j10;j+)if(ij)System.out.println();continue outer;System.out.print(+i+*+j+=+i*j);,4.4.3 return语句,退出当前函数并从该函数返回一个值。return expression;可选项 expression 参数是要从函数返回的值。假如省略,则该函数不返回值。,实验作业,编程求N的阶乘,要求判断N的值是否符合要求.编程求素数,求20个素数并分别显示在4行文本中,每行显示5个素数。输出一个等腰三角形,要求空心效果。,