Java语句及其控制结构.ppt_第1页
Java语句及其控制结构.ppt_第2页
Java语句及其控制结构.ppt_第3页
Java语句及其控制结构.ppt_第4页
Java语句及其控制结构.ppt_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

第3章Java语句及其控制结构,3.1Java程序结构3.2选择语句3.3循环语句3.4跳转语句习题,例3.1以一个程序范例来说明Java程序的构成。importjava.applet.Applet;importjava.awt.*;publicclassGetSquareextendsAppletLabellabel1;publicvoidinit()label1=newLabel(前个数的平方);add(label1);,3.1Java程序结构3.1.1Java程序构成,publicvoidpaint(Graphicsg)for(inti=0;i=d1)System.out.println(d1);System.out.println(d2);elseSystem.out.println(d2);System.out.println(d1);,图3.1,对于复杂的情况,可以嵌套使用ifelse语句。它的语法格式为:if(条件表达式1)s1语句;elseif(条件表达式2)s2语句;elses3语句;在这里依次计算条件表达式,如果某个条件表达式的值为true,就执行它后面的语句,其余部分被忽略;所有表达式的值都为false,就执行最后一个else后的s3语句。s1、s2和s3都可以是复合语句。,3.2.3ifelse复合结构,例3.4下面是一个用ifelse语句构造多分支程序的例子,判断某一年是否为闰年。闰年的条件是符合下面二者之一:能被4整除,但不能被100整除;能被400整除。输出结果如图3.2所示。publicclassLeapYearpublicstaticvoidmain(Stringargs)booleanleap;intyear=1989;if(year%4=0,year=2000;/方法2if(year%4!=0)leap=false;elseif(year%100!=0)leap=true;elseif(year%400!=0)leap=false;elseleap=true;if(leap=true)System.out.println(year+年是闰年);elseSystem.out.println(year+年不是闰年);,year=2050;/方法3if(year%4=0)if(year%100=0)if(year%400=0)leap=true;elseleap=false;elseleap=false;elseleap=false;if(leap=true)System.out.println(year+年是闰年);elseSystem.out.println(year+年不是闰年);,图3.2方法1用一个逻辑表达式包含了所有的闰年条件;方法2使用了ifelse语句的复合形式;方法3则通过大括号对ifelse进行匹配来实现闰年的判断。可以根据程序对比这3种方法,体会其中的联系和区别,在不同的场合选用适当的方法。,虽然嵌套的条件语句可实现多个分支处理,但嵌套太多时容易出错和混乱,这时可以使用开关语句switch处理。实际上开关语句switch也是一种ifelse结构,不过它使你在编程时很容易写出判断条件,特别是有很多条件选项的时候。开关语句switch的语法格式为:switch(表达式)case常量1:语句1;break;,3.2.4switch开关语句,case常量2:语句2;break;.default:语句n;其中switch、case、default是关键字,default子句可以省略。开关语句先计算表达式,然后将表达式值与各个常量比较,如果表达式值与某个常量相等,就执行该常量后面的语句;如果都不相等,就执行default下面的语句。如果无default子句,就什么都不执行,直接跳出开关语句。,使用开关语句时,注意以下几点:case后面的常量必须是整数或字符型,而且不能有相同的值;通常在每一个case中都应使用break语句提供一个出口,使流程跳出开关语句。否则,在第一个满足条件case后面的所有语句都会被执行,这种情况叫做落空。,例3.5有break语句的switch结构示例。本程序当温度变量c小于10时,显示“有点冷”;c小于25时,显示“合适”;c大于25且小于35时,显示“有点热”;c大于35时,显示“太热了”。输出结果为c等于28时的情况如图3.3所示。图3.3,publicclassW1publicstaticvoidmain(Stringargs)intc=28;switch(c10?1:c25?2:c35?3:4)case1:System.out.println(+c+有点冷);break;case2:System.out.println(+c+合适);break;case3:System.out.println(+c+有点热);break;default:System.out.println(+c+太热了);,例3.6无break语句的switch结构示例,输出结果如图3.4所示。图3.4,publicclassW2publicstaticvoidmain(Stringargs)intc=28;switch(c10?1:c25?2:c35?3:4)case1:System.out.println(+c+有点冷);case2:System.out.println(+c+合适);case3:System.out.println(+c+有点热);default:System.out.println(+c+太热了);,循环可使程序根据一定的条件重复执行某一部分程序代码,直到满足终止循环条件为止。Java中提供的循环语句有:确定次数循环(for)、条件循环(while)、先执行后判定循环(do)。,3.3循环语句,如果希望程序的一部分内容按固定的次数重复执行,通常可以使用for循环。for循环采用一个计数器控制循环次数,每循环一次计数器就计数,直到完成给定的循环次数为止。,3.3.1for循环语句,例3.7对一维数组中的每个元素赋值,然后按逆序输出,结果如图3.5所示。publicclassA2publicstaticvoidmain(Stringargs)inti;inta=newint5;for(i=0;i=0;i-)System.out.println(a+i+=+ai);,图3.5,例3.8按5的增量打印出一个从摄氏度到华氏度的转换表,输出结果如图3.6所示。classCtoFpublicstaticvoidmain(Stringargs)intfahr,cels;System.out.println(摄氏度华氏度);for(cels=0;cels=40;cels+=5)fahr=cels*9/5+32;System.out.println(+cels+fahr);,图3.6,for循环的语法格式为:for(表达式1;表达式2;表达式3)循环体其中表达式1可以给出计数器的初值,是一个赋值语句;表达式2指出循环结束条件,是一个逻辑表达式;表达式3指出计数器每次的增量,是一个赋值语句。,注意:计数器可在for语句之前定义,也可在循环括号中定义。计数器增量为1时常写成增量运算的形式,以加快运算速度。根据需要,增量可以大于或小于1。增量计算也可以放在循环体中进行,即把表达式3移到循环体内的适当位置,原位置为空。使用循环语句时常常会遇到死循环的情况,也就是无限制地循环下去。所以在使用for循环时,要注意初值、终值和增量的搭配。终值大于初值时,增量应为正值,终值小于初值时,增量应为负值。编程时必须密切关注计数器的改变,这是实现正常循环避免陷入死循环的关键。,while循环不像for循环那么复杂,while循环只需要一个条件判断语句,便可以进行循环操作。,3.3.2while循环语句,例3.9下面这个程序可接受从键盘输入的数字1、2、3,并显示得到的奖品;如果输入其他数字则显示字符“没有奖品给你!”。其中使用了开关语句和while循环语句。输出结果如图3.7所示。importjava.io.*;classGetBonuspublicstaticvoidmain(Stringargs)throwsIOExceptioncharch;System.out.println(按1/2/3数字键可得大奖!);System.out.println(按空格键后回车可退出循环操作。);while(ch=(char)System.in.read()!=)System.in.skip(2);/跳过回车键switch(ch)case1:System.out.println(你得到一辆车!);,break;case2:System.out.println(你得到一台彩电!);break;case3:System.out.println(你得到一台冰箱!);break;default:System.out.println(没有奖品给你!);,图3.7,while循环的语法格式为:while(条件表达式)循环体其中while是关键字。每次循环之前都要计算条件表达式,其值为true时,就执行一次循环体中的语句,然后再计算条件表达式,决定是否再次执行循环体中的语句;如果条件表达式的值为false时,就跳出循环体,执行循环体下面的语句。注意:while循环中的条件表达式是逻辑表达式,所以循环体中一定要有改变条件表达式值的语句,使条件表达式的值有机会变为false,否则会陷入死循环。,dowhile循环与while循环相反,是先执行循环体中的语句,再计算while后面的条件表达式,若条件表达式值为false则跳出循环;否则继续下一轮循环。有些情况下,不管条件表达式的值是为true还是false,都希望把指定的语句至少执行一次,那么就应使用dowhile循环。,3.3.3dowhile循环语句,例3.10求12+100之和,输出结果如图3.8所示。classSumpublicstaticvoidmain(Stringargs)intn=1;intsum=0;dosum+=n+;while(n0)sum=0;for(inti=1;i=10)break;System.out.println(i为+i+时循环结束);,图3.10,标号是标记程序位置的标识符。break语句只能跳转到循环语句下面的第一条语句上,而带标号的break语句可直接跳转到标号处。正常的break只退出一重循环,如果要退出多重循环,可以使用带标号的break语句。它的语法格式为:标识符:break标识符;,3.4.2带标号的break语句,例3.13带标号的break语句的使用示例。运行该程序,正常情况下可从键盘接受16个输入字符,但当输入b按回车时,breaklab1语句就会结束二重循环。输出结果如图3.11所示。classB1publicstaticvoidmain(Stringargs)throwsjava.io.IOExceptioncharch;lab1:/此处为标号标识符for(inti=0;i4;i+)for(intj=0;j4;j+)ch=(char)System.in.read();System.in.skip(2);if(ch=b)breaklab1;/跳到标号标识符处if(ch=c)System.out.println(继续);,System.out.println(结束两重循环);图3.11,continue语句只能用在循环结构中,它跳过循环体中尚未执行的语句,重新开始下一轮循环,从循环体第一个语句开始执行。,3.4.3continue语句,例3.14下面的程序可以输出19中除6以外所有偶数的平方值,输出结果如图3.12所示。classC2publicstaticvoidmain(Stringargs)for(inti=2;i=9;i+=2)if(i=6)continue;System.out.println(i+的平方=+i*i);,图3.12,Java也支持带标号的continue语句,它通常用在嵌套循环的内循环中,可以用标号标出想跳到哪一条语句继续重复执行程序。其语法格式为:标识符:continue标识符;,3.4.4带标号的continue语句,例3.15带标号的continue语句的使用示例,输出结果如图3.13所示。classC3publicstaticvoidmain(Stringargs)lab1:for(inti=1;i3)System.out.println(Continue);continuelab1;System.out.println(i=+i+j=+j);,图3.13,例3.16求100200间的所有素数。该例通过一个嵌套的for循环来实现,输出结果如图3.14所示。publicclassFindpublicstaticvoidmain(Stringargs)System.out.println(*100200间的所有素数*);intn=0;outer:for(inti=101;i200;i+=2)intk=15;for(intj=2;j-3)System.out.println(第二);elseSystem.out.println(第三);判断x的取值在什么范围内时将打印字符串“第二”?A.x0B.x-3C.x-33-3编写程序,根据考试成绩的等级打印出百分制分数段。设:A为90分以上,B为80分以上,C为70分以上,D为60分以

温馨提示

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

评论

0/150

提交评论