第3章 程序控制流程_第1页
第3章 程序控制流程_第2页
第3章 程序控制流程_第3页
第3章 程序控制流程_第4页
第3章 程序控制流程_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、第3章程序控制流程,3.1选择结构程序设计3.2循环结构程序设计3.3break和continue语句,3.1选择结构程序设计,单条件ifelse多条件switch,3.1.1if语句,当条件为真(true)时执行一个操作条件为假(false)时执行另一个操作,(1)双分支if(布尔表达式)语句区块1else语句区块2,(2)单分支if(布尔表达式)语句区块1,(3)if的嵌套if(布尔表达式1)语句区块1elseif(布尔表达式2)语句区块2elseif(布尔式3)语句区块3.else,(1)双分支:c3_1.java判断给出的成绩是否及格,publicclassc3_1publicstat

2、icvoidmain(Stringargs)intgrade;grade=86;if(grade=60)System.out.print(通过,成绩是:);System.out.println(grade);elseSystem.out.println(不及格);,语句块多行语句,必须加,单行语句,程序的运行结果是:通过,成绩是:86,例c3_2.java比较两个数的大小,importjava.awt.*;importjava.applet.*;publicclassc3_2extendsAppletpublicvoidpaint(Graphicsg)doubled1=43.4;doubled

3、2=85.3;if(d1=d2)g.drawString(d1+=+d2,25,25);elseg.drawString(d1+d2,25,25);,(2)单分支c3_3.java只有当成绩小于60时,输出“未通过”其他不输出,publicclassc3_3publicstaticvoidmain(Stringargs)intgrade;grade=56;if(grade60)System.out.print(未通过,成绩是:);System.out.println(grade);,该程序的运行结果是:未通过,成绩是:56,(3)if语句的嵌套,/例c3_4.java用if嵌套将百分制转换为5

4、分制publicclassc3_4publicstaticvoidmain(Stringargs)intgrade=76;if(grade=90)System.out.println(成绩:优);elseif(grade=80)System.out.println(成绩:良);elseif(grade=70)System.out.println(成绩:中等);elseif(grade=60)System.out.println(成绩:及格);elseSystem.out.println(成绩:不及格);,例c3_5.javapublicclassc3_5publicstaticvoidmain

5、(Stringargs)intx,y;x=8;y=4;if(x6)if(y6)System.out.println(“设备正常”);elseSystem.out.println(设备出错);,注意:if嵌套时,最近匹配:else将与离它最近的if配对,程序错误反例:当x和y都大于6时,输出“设备正常”的信息;仅当x6,y6时,输出了“设备出错”而x=6时什么信息也没输出。问题出在哪里?else同哪个if匹配了?,3.1.3switch语句,从多个分支中选择一个分支执行时嵌套的if过于繁琐例如:对给定的成绩grade(介于0100),划分成优:90100良:8090.那么能不能根据kgrade/

6、10的结果来判断属于哪个分数段呢?swtich,switch(表达式)case值1:语句区块1;break;/分支1case值2:语句区块2;break;/分支2case值n:语句区块n;break;/分支ndefault:语句区块n+1;/分支n+1,可以是byte,char,short,int,但不能是float,case后面的值必须是常量,Default可以省略,注意break,例:c3_6.java判断成绩等级,importjava.awt.*;importjava.applet.*;publicclassc3_6extendsAppletpublicvoidpaint(Graphic

7、sg)intk;intgrade=86;/改为76,结果仍旧是良,因为8:后面没有breakk=grade/10;switch(k)case10:case9:g.drawString(成绩:优,25,25);break;case8:case7:g.drawString(成绩:良,25,25);break;case6:g.drawString(成绩:及格。,25,25);break;default:g.drawString(成绩:不及格。,25,25);,3.1.3条件运算符三目运算符,适用:简单的if/else语句if(xy)m=x;elsem=y;可用下面的条件运算符来替代:m=(xy)?x

8、:y若xy为true则表达式取x的值,否则取y的值形式:布尔表达式1?表达式2:表达式3,表达式2和表达式3的类型必须相同,【示例程序c3_7.java】publicclassc3_1publicstaticvoidmain(Stringargs)intmax,min,a,b;inty;a=1;b=2;max=(ab)?a:b;y=(a!=b)?1:0;min=(ab)?a:b;System.out.print(max=+max);System.out.print(ty=+y);System.out.println(tmin=+min);,运行结果是:max=2y=1min=1,3.2循环结构

9、程序设计,whiledo-whilefor,while(布尔表达式)循环体语句区块,do循环体语句区块while(布尔表达式),While和do-while的区别:Dowhile至少执行一次循环体而while可能一次都不执行,3.2.1while语句,【示例程序c3_8.java】打印数字15。publicclassc3_8publicstaticvoidmain(Stringargs)intcounter=1;/循环变量及其初始值while(counter=5)/循环条件System.out.println(counter=+counter);counter+;/循环变量增值,运行结果如下:

10、counter=1counter=2counter=3counter=4counter=5,3.2.2do-while语句,【示例程序c3_9.java】计算从1开始的连续n个自然数之和,当其和值刚好超过100时结束,求这个n值。importjava.awt.*;importjava.applet.*;publicclassc3_9extendsAppletpublicvoidpaint(Graphicsg)intn=0;intsum=0;/循环变量及其初始值don+;sum+=n;/循环变量增值while(sum=100);/循环条件g.drawString(sum=+sum,25,25);

11、g.drawString(n=+n,100,25);,该程序的运行结果是:sum=105n=14,3.2.3for语句,适于:确切知道循环次数时一般形式for(初值表达式;布尔表达式;循环过程表达式)循环体程序语句区块,循环变量赋初值,用来判断循环是否继续,完成修改循环变量、改变循环条件,true,false,c3_10.java求自然数1100之间所有奇数之和。,publicclassc3_10publicstaticvoidmain(Stringargs)intsum=0,odd;for(odd=1;odd=100;odd+=2)sum+=odd;System.out.println(su

12、m=+sum+odd=+odd);,该程序的运行结果是:sum=2500odd=101,true,false,publicclassc3_11publicstaticvoidmain(Stringargs)intf1=1,f2=1;/f1为第一项,f2为第二项for(inti=1;i38/2;i+)System.out.print(t+f1+t+f2);/每次输出两项if(i%2=0)System.out.println(n);/每输出两次共4项后换行f1=f1+f2;/计算下一个奇位项f2=f2+f1;/计算下一个偶位项,例c3_11求Fibanacci数列,Fibonacci数列:1,1,

13、2,3,5,8,的前36个数。,构造该数列的递推关系是:F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n3),运行结果如下:1123581321345589144233377610987159725844181676510946177112865746368750251213931964183178115142298320401346269217830935245785702887922746514930352,【特1】省略部分成分的for,for(;)可以,但要在循环体内加循环变量,小心“死循环”,【示例程序c3_12.java】编写求解(即1+2+3+9+10)的程序。pu

14、blicclassc3_12publicstaticvoidmain(Stringargs)inti=1;/1.初值表达式写在循环语句之前intsum=0;for(;)sum+=i+;/2.循环过程表达式i+写在了循环体内if(i10)break;/3.布尔表达式写在了循环体内的if语句中System.out.println(sum=+sum);,【特2】for头中使用逗号表达式,for结构头的构件中,“初值表达式”和“循环过程表达式”中还可以使用逗号运算符。这也是Java中唯一使用逗号运算符的地方。,publicclassc3_13publicstaticvoidmain(Stringarg

15、s)inti,sum;for(i=1,sum=0;i=10;i+)/初值表达式中使用了逗号运算符sum+=i;System.out.println(sum=+sum);该程序的运行结果是:sum=55,for(i=1,sum=0;i=10;i+,sum+=i;);System.out.println(sum=+sum);/千万别忘记for末尾的;否则下一句就被当成循环体了,思考,whilevs.do-whilevs.for及其适用场合,c3_15.java统计选票,设有李L、王W、张Z三人竞选领导,由群众投票表决importjava.io.*;publicclassc3_15publicsta

16、ticvoidmain(Stringargs)throwsIOExceptionBufferedReaderkeyin=newBufferedReader(newInputStreamReader(System.in);/上面一条语句是有关键盘输入数据流处理的,详细内容将在第12章讲解intLtotal=0,Wtotal=0,Ztotal=0;charname;Stringc1;System.out.print(enterletterLorWorZname,#toend:);c1=keyin.readLine();/从键盘上读取一个字符串赋给c1name=c1.charAt(0);/charA

17、t(0)从一个字符串中截取第0个字符while(name!=#)switch(name)caseL:casel:Ltotal=Ltotal+1;break;caseW:casew:Wtotal=Wtotal+1;break;caseZ:casez:Ztotal=Ztotal+1;break;System.out.print(enterletterLorWorZname,#toend:);c1=keyin.readLine();name=c1.charAt(0);/while循环结束,System.out.println(Ltotal=+Ltotal);System.out.println(Wt

18、otal=+Wtotal);System.out.println(Ztotal=+Ztotal);/endofclass,3.2.7循环嵌套c3_16.java,/编程打印三角形数字图案。publicclassc3_16publicstaticvoidmain(Stringargs)for(inti=1;i=10)System.out.print(+i+”);elseSystem.out.print(+i+“);System.out.println();/外层for循环结束,12233344445555566666677777778888888899999999910101010101010101010,publicclassc3_17publicstaticvoidmain(Stringargs)intn=1,m,s,k=0;while(n=8)for(s=1,m=1;m=n;m+

温馨提示

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

评论

0/150

提交评论