java流程控制语句.ppt_第1页
java流程控制语句.ppt_第2页
java流程控制语句.ppt_第3页
java流程控制语句.ppt_第4页
java流程控制语句.ppt_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

第三章JAVA流程控制语句,主讲教师:毛科亮,本章内容,语句概述Java语言的语句分类结构化程序设计的三种基本流程分支语句If语句If-else语句Switch语句循环语句while循环语句do-while语句for语句转移语句break语句continue语句return语句常用的程序设计方法枚举法、地推法、递归法简单图形的输出格式化的输入与输出从键盘输入数据格式化的输出,语句的概念,java程序的执行遵循一定的流程,流程是程序执行的顺序。流程控制语句是控制程序中各语句执行顺序的语句,是程序中非常关键和基本的部分。流程控制语句可以把单个的语句组合成有意义的、能够完成一定功能的小逻辑块。,一、Java语句概述,语句与结构化程序设计在算法语言中,数据类型描述数据的性质,表达式描述对数据的运算,语句描述对数据的操作。程序由一系列语句组成。Java语言虽然是一种面向对象的计算机语言,但在一个局部,例如方法内、块语句内仍然需要面向过程的程序设计和方法。作为面向过程程序设计精华的结构化程序设计思想,仍然是面向对象程序设计方法的基石。,一、Java语句概述,结构化程序设计的三种基本流程:尽管现实世界的问题是复杂的、千变万化的,但与之相对应的计算机算法流程,只有三种基本结构-顺序结构、选择结构、循环结构。每种结构都是单入口、单出口;每一部分都会被执行到;没有死循环。,A,B,P,A,B,P,循环体,真,假,假,真,Java语言提供支持结构化程序设计的所有语言。,一、Java语句概述,Java语言提供结构化语句实现程序的流程控制。表达式语句顺序结构空语句复合语句条件语句选择语句语句开关语句switchwhile循环语句do-whileforbreak转移语句continuereturn,一、Java语句概述,一、Java语句概述,在java语言中,语句以分号“;”为结束标志。特殊的是,块语由其他语句组成,其本身不用分号结束。内嵌有块语句并以块语句结尾的语句,也不需要用分号结尾。ava语句按性质可分为:说明性语句、操作性语句。Java语句按功能可分为:空语句、标号语句、声明语句、表达式语句、分支语句、循环语句、断言语句、跳转语句、同步语句、异常语句、块语句等。,一、Java语句概述,一、Java语句概述,空语句:仅包含一个分号。例如:for(inti=1;i3)System.out.println(a3);System.out.print(ok!);上面的执行结果是什么?,IF语句,二、Java分支语句,一、Java语句概述,classMaxpublicdoublegetMax(doublea,doubleb)doublemax;max=a;if(maxb)max=b;returnmax;publicclassEx3_1publicstaticvoidmain(Stringargs)Maxobj=newMax();System.out.println(max=+obj.getMax(3.14,3.1415926);,判断两个数的最大值,格式:if(表达件)语句1;else语句2;功能:首先计算表达式,若值为真,则执行语句1,否则执行语句2。,IF-else语句,二、Java分支语句,一、Java语句概述,importjava.util.*;classLeappublicbooleanisLeap(intyear)if(year%4=0),闰年问题,if(条件1)/程序代码;elseif(条件2)/程序代码;elseif(条件3)/程序代码;注意:只要任何一个条件成立.程序就不会对下一个条件进行判断和再执行了。,IF-elseif语句,二、Java分支语句,publicclassEx3_3publicstaticvoidmain(Stringargs)(newLetter().judgeLetter();classLetterpublicvoidjudgeLetter()charch;ch=(char)(java.lang.Math.random()*128);if(ch=a,检查用random()方法产生的一个字符,判断是否为英文大写字母、小写字母、数字或是其他符号,并输出相应信息。,IF嵌套语句if(条件1)if(条件2)/程序代码;else/程序代码;elseif(条件3)/程序代码;else/程序代码;.,IF嵌套语句,二、Java分支语句,switch(表达式)case值1:语句1;break;case值2:语句2;break;case值3:语句3;break;.case值N:语句N;break;default:语句N+1,多分支语句switch,二、Java分支语句,二、Java分支语句,功能:首先计算表达式的值,然后在switch语句中寻找与该表达式的值相匹配的case值。,表达式的返回值类型必须是这几种类型一int,byte,char,short。case子句中的值必须是常量,而且所有case子句中的值应是不同的。default子句是可选的。break语句用来在执行完一个case分支后,使程序跳出switch语句,即终止switch语句的执行(在一些特殊情况下,多个不同的case值要执行一组相同的操作这时可以不用break,不写break时执行自该case开始到下一次找到break语句为止),多分支语句switch,二、Java分支语句,二、Java分支语句,importjava.util.*;publicclassEx3_4publicstaticvoidmain(Stringargs)(newGrade().toGrade();classGradepublicvoidtoGrade()intscore,m;Scannerreader=newScanner(System.in);System.out.println(输入成绩:);score=reader.nextInt();if(score100)System.out.println(dataerror!);elsem=score/10;switch(m)case9:case10:System.out.println(ThegradeisA.);break;case8:System.out.println(ThegradeisB.);break;case7:System.out.println(ThegradeisC.);break;case6:System.out.println(ThegradeisD.);break;default:System.out.println(ThegradeisE.);break;,输入百分成绩,输出成绩等级。,循环语句的作用是反复执行一段代码,直到满足终止循环的条件为止。Java语言中提供的循环语句有:while语句do-while语句for语句,循环语句,三、Java循环语句,三、Java循环语句,While(条件)/循环体注意:(1)此语句是先判断条件,再确定是否执行语句或程序块。(2)条件为true时,执行循环体的语句或程序块。反之,不执行循环体。(3)在循环体中要有改变条件的语句,否则会成为死循环。,while语句,三、Java循环语句,do/循环体;while(条件);注意:(1)此语句是先执行一次循环体,再判断条件。(2)条件为true时,再次执行循环体的语句或程序块。(3)在循环体中要有改变条件的语句,否则会成为死循环。(4)do-while循环语句即是至少都要执行一次的。,do-while语句,三、Java循环语句,三、Java循环语句,for(设定初始值;条件限定;修改控制变量)/程序代码;不限定的循环(死循环)for(;)/程序代码;多个变量进行定义for(inti=0,j=100;ij;i+,j-)/程序代码;,For语句,三、Java循环语句,三、Java循环语句,for(inti=0;i100;i+)for(intj=0;ji;j+)/程序块;注意:在我们的实际开发过程中,for循环语句使用的比较多,重点把握!,For循环嵌套,三、Java循环语句,三、Java循环语句,/输出1100内前5个可以被3整除的数。publicclassEx3_5publicstaticvoidmain(Stringargs)intnum=0,i=1;while(i=100)if(i%3=0)System.out.print(i+);num+;if(num=5)break;i+;,/输出101200内的质数,publicclassEx3_6publicstaticvoidmain(Stringargs)for(inti=101;i200;i+=2)booleanf=true;for(intj=2;ji;j+)if(i%j=0)f=false;break;if(!f)continue;System.out.print(+i);,三、Java循环语句,三、Java循环语句,JAVA中的跳转语句有:break语句continue语句返回语句return,跳转语句,四、Java跳转语句,break语句用于终止某个语句块或循环体的执行break;break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块label1:label2:label3:breaklabel2;,break语句,四、Java跳转语句,四、Java跳转语句,break语句示例,publicclassEx3_7publicstaticvoidmain(Stringargs)for(inti=1;i=10;i+)if(i=5)break;System.out.println(i=+i);System.out.println(Done);,四、Java跳转语句,四、Java跳转语句,外层跳转:break语句,在switch语中,break语句用来终止switch语句的执行。在Java中,可以为每个代码块加一个标号,一个代码块通常是用大括号括起来的一段代码。加标号的格式如下:BlockLabel:codeBlockbreak语句的第二种使用情况就是跳出它所指定的块,并从紧跟该块的第一条语句处执行。例如:breakBlockLabel;break语句a:/标记代码块ab:/标记代码块bc:/标记代码块cbreakb;/此处的语句块不被执行/此处的语句块不被执行/从此处开始执行,四、Java跳转语句,四、Java跳转语句,break语句用于终止某个语句块的执行。用在循环语句体中,可以强行退出循环;例如:publicclassEx3_8publicstaticvoidmain(Stringargs)intstop=4;for(inti=1;i=10;i+)/当i等于stop时,退出循环if(i=stop)break;System.out.println(i=+i);,i=1i=2i=3,continue语句用在循环语句体中,用于终止某次循环过程,跳过循环体中continue语句下面未执行的循环,开始下一次循环过程;例如:publicclassEx3_9publicstaticvoidmain(Stringargs)intskip=4;for(inti=1;i=5;i+)/当i等于skip时,跳过当次循环if(i=skip)continue;System.out.println(i=+i);,i=1i=2i=3i=5,2.5.4,四、Java跳转语句,四、Java跳转语句,continue语句,continue语句用于跳过某个循环语句块的一次执行continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环。,四、Java跳转语句,四、Java跳转语句,continue语句实例,publicclassEx3_10publicstaticvoidmain(Stringargs)for(inti=1;i=10;i+)if(i=5|i=7)continue;System.out.println(i=+i);System.out.println(Done);,四、Java跳转语句,四、Java跳转语句,外层跳转:continue语句,continue语句用来结束本次循环,跳过循环体中下面尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。对于for语句在进行终止条件的判断前,还要先执行迭代语句。也可以用continue跳转到括号指明的外层循环中格式为continueouterLable;例如outer:for(inti=0;i10;i+)/外层循环inner:for(intj=0;j10;j+)/内层循环if(ij)continueouter;,四、Java跳转语句,四、Java跳转语句,返回语句return,return语句从当前方法中退出,返回到调用该方法的语句处,并从紧跟该语句的下一条语句继续程序的执行。返回语句有两种格式:returnexpression;return;return语句通常用在一个方法体的最后,否则会产生编译错误,除非用在if-else语句中。,四、Java跳转语句,1、枚举法(穷举法),就是把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出。,五、常用的程序设计方法,38,常用算法,1、枚举法(穷举法)“笨人之法”:把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出。【例一】百元买百鸡:用一百元钱买一百只鸡。已知公鸡5元/只,母鸡3元/只,小鸡1元/3只。分析:这是个不定方程三元一次方程组问题(三个变量,两个方程)xyz=1005x3yz/3=100设公鸡为x只,母鸡为y只,小鸡为z只。,五、常用的程序设计方法,classEx3_11publicstaticvoidmain(Stringarg)intx,y,z;for(x=0;x=100;x+)for(y=0;y=100;y+)z=100-x-y;if(5*x+3*y+z/3.0=100)System.out.println(cocks=+x+,+hens=+y+,+chickens=+z);,结果:cocks=0,hens=25,chickens=75cocks=4,hens=18,chickens=78cocks=8,hens=11,chickens=81cocks=12,hens=4,chickens=84,五、常用的程序设计方法,另一种计算方法:,classHundredYuanChickenpublicvoidprintChicken()intx,y,z;for(x=0;x=100;x+)for(y=0;y=100;y+)for(z=0;z=100;z+)if(x+y+z=100,五、常用的程序设计方法,41,2、递推法(迭代法)基本思想:不断由已知值推出新值,直到求得解为止。迭代初值、迭代公式和迭代终止条件是迭代法的三要素例:斐波纳契数列。前两个数都是1,第三个数是前两个数之和,以后的每个数都是其前两个数之和。各数之间的一种递推关系,即:Fn=Fn-1+Fn-2,F1=F2=1本题的三要素是:迭代初值:x=1,y=1迭代公式:z=y+x终止条件:共计算n-2次,五、常用的程序设计方法,42,publicclassEx3_12staticintfib(intn)intfirst=1;intsecond=1;intsum=first+second;inti=2;while(+in)first=second;second=sum;sum=first+second;returnsum;publicstaticvoidmain(Stringargs)System.out.println(f20=+fib(20);,程序的运行结果如下:javaFibIterativef20=6765,五、常用的程序设计方法,【累加型】类型诸如+求其前n项之和的编程题。,累加型算法若设i为循环变量,s为前n项累加之和,则程序的基本结构为:s=0;for(i=1;i=n;i+)s=s+;,五、常用的程序设计方法,44,编程求11/2+1/31/4+1/5+1/991/100,累加型算法程序基本结构为:s=0;for(i=1;i=n;i+)s=s+;,运行结果:Sum=0.6881719,五、常用的程序设计方法,45,1)classEx3_132)staticfloatmySum(intn)3)floatk=1f;4)floatsum=0.0f;5)for(inti=1;i=n;i+)6)7)sum=sum+k/i;8)k=-k;9)10)returnsum;11)12)publicstaticvoidmain(Stringargs)13)System.out.println(Sum100=+mySum(100);14),五、常用的程序设计方法,46,【阶乘型】类型诸如求其前n项之积的编程题。,阶乘型算法若设i为循环变量,s为前n项相乘之积,则程序的基本结构为:s=1;for(i=1;i=n;i+)s=s*;,五、常用的程序设计方法,47,classEx3_14staticintmyFac(intn)intfac=1;for(inti=1;i=n;i+)fac=fac*i;returnfac;publicstaticvoidmain(Stringargs)System.out.println(Fac10=+myFac(5);,n!运行结果:Fac10=3628800.0,五、常用的程序设计方法,48,编程求n!=1!+2!+3!+n!(n由键盘输入),在同一个循环中先阶乘,后累加,五、常用的程序设计方法,49,1)classEx3_152)staticintmethod(intn)3)ints=0,p=1;4)for(inti=1;i=n;i+)5)p=p*i;/i!6)s=s+p;7)8)returns;9)10)publicstaticvoidmain(Stringargs)11)intr=method(5);12)System.out.println(r=+r);13)14),运行结果:r=153,五、常用的程序设计方法,50,a+aa+aaa+aa=?,importjava.io.*;classEx3_16publicstaticvoidmain(Stringargs)throwsIOExceptionBufferedReaderbr=newBufferedReader(newInputStreamReader(System.in);System.out.print(请输入一个长度n:);Stringstr=br.readLine();/转换字符串为整型数intn=Integer.parseInt(str);,五、常用的程序设计方法,51,System.out.print(请输入一个整数a:);str=br.readLine();/输入字符存入字符串inta=Integer.parseInt(str);/转换字符串为整型数据inti=1,sn=0,tn=0;while(i2),publicclassEx3_18publicstaticvoidmain(Stringarg)System.out.println(f(40);publicstaticintf(intn)if(n=1|n=2)return1;elsereturnf(n-1)+f(n-2);,五、常用的程序设计方法,main,f5,f4,f3,f2,f1,f2,f3,f2,f1,publicstaticintf(intn)if(n=1|n=2)return1;elsereturnf(n-1)+f(n-2);,五、常用的程序设计方法,56,4、简单图形的输出编程显示以下图形(共N行,N由键盘输入)。*,此类题目分析的要点是:通过分析,找出每行空格、*与行号i、列号j及总行数N的关系。其循环结构可用右图表示。,分析:(设N=5)第1行4个空格=5-11个“*”=2*行号-1第2行3个空格=5-23个“*”=2*行号-1第3行2个空格=5-35个“*”=2*行号-1第4行1个空格=5-47个“*”=2*行号-1第5行0个空格=5-59个“*”=2*行号-1,由此归纳出:第i行的空格数N-i个;第i行的“*”数是2i-1个。,五、常用的程序设计方法,57,编程显示以下图形(共N行,N由键盘输入)。*算法:分成两部分完成:N=9行N1=(N+1)/2=5N2=N-N1=4,五、常用的程序设计方法,58,publicclassEx3_19publicstaticvoidmain(Stringargs)intn=9;intmiddle=(n+1)/2,spaceNum;for(inti=1;i=middle;i+)/打印星号前的空格spaceNum=middle-i;for(intj=1;j=spaceNum;j+)System.out.print();/打印星号for(intk=1;k=2*i-1;k+)System.out.print(*);System.out.println();middle=(n+1)/2;for(inti=1;i=middle;i+)/打印星号前的空格spaceNum=middle-i;for(intj=1;j=i;j+)System.out.print();/打印星号for(intk=1;k=2*spaceNum-1;k+)System.out.print(*);System.out.println();,五、常用的程序设计方法,59,/第一部分,输入*个数importjava.io.*;publicclassEx3_20publicstaticvoidmain(Stringargs)throwsIOExceptionintn;BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in);doSystem.out.print(inputaoddnumber:);Stringstr=br.readLine();n=Integer.parseInt(str);while(n%2=0);/条件值为false时结束循环,五、常用的程序设计方法,60,/第二部分,打印上半部分intmiddle=(n+1)/2,spaceNum;for(inti=1;i=middle;i+)/打印星号前的空格spaceNum=middle-i;for(intj=1;j=spaceNum;j+)System.out.print();/打印星号for(intk=1;k=2*i-1;k+)System.out.print(*);System.out.println();,五、常用的程序设计方法,61,/第二部分,打印下半部分for(inti=1;i=n-middle;i+)/打印星号前的空格spaceNum=i;for(intj=1;j=spaceNum;j+)System.out.print();/打印星号for(intk=1;k=2*(middle-i)-1;k+)System.out.print(*);System.out.println();,五、常用的程序设计方法,/第二部分另一种实现方法intmiddle=(n+1)/2,spaceNum,maxLetterNum=n,letterNum;for(inti=1;i=n;i+)/打印星号前的空格spaceNum=Math.abs(middle-i);for(intj=1;j=spaceNum;j+)System.out.print();/打印星号letterNum=maxLetterNum-2*spaceNum;for(intj=1;j=letterNum;j+)System.out.print(*);System.out.println();,五、常用的程序设计方法,从命令行输入、输出数据,Scanner是JDK1.5新增的一个类,可以使用该类创建一个对象。如:Scannerreader=newScanner(System.in);reader对象可调用下列方法,读取用户在命

温馨提示

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

评论

0/150

提交评论