




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java程序设计第三章流程控制1理解程序控制的概念运用条件语句,使用if,switch来控制程序的不同执行路径掌握for、while和do句型结构控制程序的循环执行理解并能应用break、continue和return调整程序中的流程控制结构。理解并使用断言对程序进行调试掌握Java语言中不同注释形式的区别掌握利用Scanner类实现基本的输入方法理解并能使用System.out对象中的不同输出方法掌握基本的编程技巧。2程序程序表现为完成某个功能(目标)而编写的指令集合。在整体上,程序运行是按照事先编写的指令(语句)从前到后的顺序执行,但在执行的过程中,经常会遇到基于不同条件的决策来执行不同的指令,抑或重复执行事先定义的指令来达到某种目的,但总体上程序总是顺序执行的。3一个例子编写一个程序,声明3个整型变量,用来保存3个学生的考试分数,计算他们的平均分(float类型)并输出。4进一步的如果某个学生的成绩低于60分,则不参与平均分计算。5在进一步如果有50个学生的成绩已经保存在一个整型数组中,同样基于上面规则来计算这批学生的平均分。63.1句、块和空白构成Java程序的最小单位是类,而类则是由属性和方法构成。方法代表了某个具体的能力,具体的一个方法就是由为完成某个功能而编写的若干条语句组成。73.1.1语句在Java编程语言中,语句是一行由分号(;)终止的代码,它是一个完整的可执行单元。例如totals=a+b+c+d+e+f;与下式相同total=a+b+c+d+e+f;8在Java中,主要有以下的语句类型声明语句inta=0;//声明了一个整型变量Studentstu;//声明了一个类型是Student的对象表达式语句赋值表达式,自增表达式、方法调用、对象创建都可以和分号一起构成“表达式语句”System.out.println(“Welcome”);//输出字符串a=Math.abs(-3.1);//返回绝对值value=100;//为变量赋值a++;//a自增Studentstu=newStudent(“张华”);//创建一个Student类的实例,实例引用名为stu控制语句93.1.2语句块一个块(block)或一个复合语句是以上括号和下括号为边界的语句集合;块语句也被用来组合属于某个类的语句。语句块可被嵌套。//ablock语句{x=y+1;y=x+1;}10//类类声声明明所所包包含含的的块块语语句句publicclassMyDate{intday;intmonth;intyear;}11//一一个个嵌嵌套套块块语语句句的的例例子子while(i<large){//循循环环语语句句快快开开始始,,用用"{"表表示示a=a+i;if(a==max){//判判断断语语句句快快开开始始,,用用"{"表表示示b=b+a;a=0;}//判判断断语语句句块块结结束束,,用用"}"表表示示}//循循环环语语句句快快结结束束,,用用"}"表表示示123.1.3空空白白在源源代代码码元元素素之之间间允允许许空空白白,,空空白白的的数数量量不不限限。。空空白白(包包括括空空格格、、tabs和和新新行行)可可以以改改善善源源代代码码的的视视觉觉感感受受。。{intx;x=23+54;}{intxx=23+54;}133.2逻逻辑辑判判断断和和循循环环控控制制程序序控控制制可可以以定定义义为为对对程程序序语语句句的的执执行行顺顺序序进进行行的的规规定定。。Java提提供供了了条条件件语语句句在在两两种种或或更更多多的的情情况况中中做做出出选选择择,,根根据据情情况况执执行行不不同同的的程程序序语语句句;;Java也也提提供供了了更更有有效效的的循循环环语语句句以以控控制制那那些些需需要要重重复复执执行行的的语语句句。。143.2.1条条件件判判断断与与决决策策1if,else语语句句简单单的的单单分分支支语语句句if(布布尔尔表表达达式式){{语句句或或块块;;}例如如if(score<60){System.out.println(““下下次次努努力力哦哦!””);}153.2.1条条件件判判断断与与决决策策(cont.)简单单的的双双分分支支语语句句if(布布尔尔表表达达式式){{语句句或或块块;;}else{{语句句或或块块;;}例如如if((score<60)){System.out.println(““下下次次努努力力哦哦!””);}else{System.out.println(““恭恭喜喜你你通通过过考考试试!””);}16expBAFT选择结构173.2.1条条件件判判断断与与决决策策(cont.)嵌套套的的if,elseif(布布尔尔表表达达式式1){{语句句或或块块;;}elseif(布布尔尔表表达达式式2){{语句句或或块块;;}else{语句句或或块块;;}18例如如if((score<60)){System.out.println(““下下次次努努力力哦哦!””);}elseif(score<80){System.out.println(““恭恭喜喜你你通通过过考考试试!””);}else{System.out.println(““你你考考的的很很棒棒!””);}193.2.1条条件件判判断断与与决决策策(cont.)2switch语语句句switch语语句句允允许许程程序序员员更更多多情情况况下下选选择择不不同同的的程程序序逻逻辑辑,,当当情情况况发发生生时时,,按按照照事事先先准准备备好好的的方方法法执执行行。。switch语语句句的的句句法法是是::switch(expr1){{caseexpr2:statements;break;caseexpr3:statements;break;default:statements;}20chargender;//性性别别……….switch((gender)){case‘‘F’’::case‘‘f’’:System.out.println(””女女性性““);break;case‘‘M’’::case‘‘m’’:System.out.println(””男男性性““);break;}21在switch(expr1)语语句句中中,,expr1必必须须与与int类类型型是是赋赋值值兼兼容容的的;;byte,short或或char类类型型可可被被升升级级;;不不允允许许使使用用浮浮点点或或long表表达达式式。。变量量或或表表达达式式的的值值不不能能与与任任何何case值值相相匹匹配配时时,,可可选选缺缺省省符符((default))指指出出了了应应该该执执行行的的程程序序代代码码。。如果果没没有有break语语句句作作为为某某一一个个case代代码码段段的的结结束束句句,,则则程程序序的的执执行行将将继继续续到到下下一一个个case,,而而不不检检查查case表表达达式式的的值值。。default语语句句一一般般在在switch语语句句的的最最后后。。在switch(expr1)语语句句中中,,expr1也也可可以以是是枚枚举举类类型型publicenumMonth{JANUARY,FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY,AUGUST,SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER}22TA1Fexp=1TA2Fexp=2…TAnFexp=n多分支结构23课堂堂练练习习指出出输输出出结结果果x=2;y=3;if(x>2)if(y>2){intz=x+y;System.out.println(““zis””+z);}elseSystem.out.println(““xis””+x);24课堂堂练练习习(c.)指出出输输出出结结果果x=2;y=3;if(x>2){if(y>2){intz=x+y;System.out.println(““zis””+z);}}elseSystem.out.println(““xis””+x);25课堂堂练练习习(c.)执行行下下列列switch语语句句后后y是多多少少??x=3;switch(x+3){case6:y=1;default:y+=1;}26课堂堂练练习习(c.)有一一个个函函数数如如下下,,根根据据指指定定的的x,,输输出出y值值y=Xx<12X-11<=x<103X-11x>=10写出出程程序序,,根根据据给给出出的的百百分分制制成成绩绩,,输输出出成成绩绩等等级级’’A’’、、’’B’’、、’’C’’、、’’D’’、、’’E’’,90分分以以上上为为A,,80~~89为为B,,70~~79为为C,,60~~69为为D,,60分分以以下下为为E。。27课堂堂练练习习(c.)编写写一一个个程程序序,,根根据据命命令令行行参参数数将将对对应应的的1、、2、、3、、4、、5、、6、、7分分别别输输出出为为星星期期一一、、星星期期二二…….星星期期日日,,如如::JavaWeekDay1星期期一一28思考考题题如何何提提高高多多分分支支下下的的程程序序执执行行效效率率??293.2.2循循环环循环环语语句句使使语语句句或或块块的的执执行行得得以以重重复复进进行行。。Java编编程程语语言言支支持持三三种种循循环环构构造造类类型型::for,while和和do循循环环。。for和和while循循环环是是在在执执行行循循环环体体之之前前测测试试循循环环条条件件do循循环环是是在在执执行行完完循循环环体体之之后后测测试试循循环环条条件件。。这就就意意味味着着for和和while循循环环可可能能连连一一次次循循环环体体都都未未执执行行,,而而do循循环环将将至至少少执执行行一一次次循循环环体体。。30FSTexp直到型循环当型循环TexpSF31for循循环环的的句句法法是是::for(init_expr;booleantestexpr;alter_expr){{statementorblock}例如如::for(inti=0;i<10;i++){System.out.println("i="+i);}32增强强的的for循循环环publicclassForEnhancedDemo{publicstaticvoidmain(String[]args){int[]arrayOfInts={32,87,3,589,12,1076,2000,8,622,127};for(intelement:arrayOfInts){System.out.print(element+"");}System.out.println();}}33while循环环的句句法::while(布布尔表表达式式){{语句或或块}inti=0;while(i<10){System.out.println("i="+i);i++;}System.out.println("Finally!");34do循循环的的句法法是::do{{语句或或块;;}while(布布尔测测试)inti=0;do{System.out.println("i="+i);i++;}while(i<10);System.out.println("Finally!");35思考题题怎么决决定使使用哪哪类循循环??36循环的的嵌套套在一个个循环环体内内又包包含了了另一一个完完整的的循环环结构构,成成为嵌嵌套循循环。。如:while(循循环条条件)){[语句句;]while((循环环条件件){[语句句;]}[语句句;]}373.2.3跳跳转下列语语句可可被用用在更更深层层次的的控制制循环环语句句中::break[[标注注];;continue[[标注注];;label:语语句句;Label:被被用用来标标识循循环构构造的的复合合语句句。break语句句被用用来从从switch语句句、for语句句等循循环语语句的的块中中退出出到预预先设设定的的label处处。当当程序序运行行到break[[标注注]处处时,,程序序跳出出整个个循环环体的的结尾尾处。。continue语语句被被用来来略过过并跳跳到循循环体体的结结尾。。当程程序运运行到到continue[[标注注]处处时,,程序序跳至至标识识外循循环的的下一一次循循环开开始处处继续续执行行。38loop:while(true){for(inti=0;i<100;i++){switch(c=System.in.read()){case-1:case`\n`://跳跳到到最后后处breakloop;....}}//endfor}//endwhile39课堂练练习下面的的循环环程序序输出出结果果是什什么??publicclassShowErrors{publicstaticvoidmain(String[]args){for(inti=0;i<10;i++);System.out.println(i+4);}}40课堂练练习(c.)编写一一个程程序,,求出出1+2+3+…+100的的和并并输出出。求出100-200间的的所有有素数数。41用下面面的方方法声声明,,编写写一个个java方法法,返返回接接收字字符数数组中中连续续字符符块的的个数数:publicstaticintcountRuns(char[]A)42程序流流程图图程序流流程图图也叫叫程序序框图图.程程序流流程图图的表表示以以3种种程序序结构构为基基础。。优点历史最最悠久久,使使用最最广泛泛;流程控控制直直观,容易易掌握握;至今仍仍广泛泛使用用.缺点可能诱诱导程程序员员过早早考虑虑程序序细节节,而而不是是逐步步求精精;对于提提高大大型系系统的的可理理解性性作用用不大大;程序随随意转转移,导致致程序序结构构混乱乱;无法表表示数数据结结构.43起止输入输出处理判断打印输出连接准备控制流磁盘文件换页循环下界循环上界程序流流程图图的常常用符符号:程序流流程图图(Cont.)44SequentialABPFTABSelectivePFTBCallsubroutineA盒图(BoxDiagram):Nassi&Shneiderman1973年提出出,又又称为为N-SCharts。。Chapin1974年作扩扩充,,故也也称为为Chapincharts.用用方框框图代代替传传统的的流程程图;N-S图45x4TFDo-Untilx5ighfkx1TFbDo-Untilx6ajx21cDo-Whilex323dek:例:N-S图((cont.)46变量的的作用用域每个变变量都都有一一个作作用域域,就就是说说这个个变量量在哪哪个程程序段段中起起作用用。变量的作用用域从它被被声明时开开始直到遇遇到声明变变量的代码码段的结束束符“}””为止。只能在变量量的作用域域内访问它它。如果在在作用域之之外访问变变量,编译译器将产生生一个错误误。作用域的范范围成员变量局部变量方法参数47变量的作用用域(c.)publicclassVariableScope{publicstaticvoidmain(Stringargs[]){inti=10;{intk=10;System.out.println("i="+i);System.out.println("k="+k);}System.out.println("i="+i);System.out.println("k="+k);}}48变量的作用用域(c.)可以注意到到,不同作作用域内的的变量互相相不干扰,,通常变量量是当前最最近作用域域内定义的的该变量,,如果要引引用更大作作用域外的的变量,则则需要增加加限定符,,例如我们们已经看到到过的this.493.3基本本的输入输输出控制控制台的输输入表3-2Scanner类nextByte()将输入信息的下一个标记扫描为一个byte。nextDouble()将输入信息的下一个标记扫描为一个doublenextFloat()将输入信息的下一个标记扫描为一个floatnextInt()()将输入信息的下一个标记扫描为一个intnextLine()此扫描器执行当前行,并返回跳过的输入信息nextLong()将输入信息的下一个标记扫描为一个longnextShort()将输入信息的下一个标记扫描为一个short50Scannerreader=newScanner(System.in);程序51字符界面的的输出printprint是PrintStream类提供的的一种输出出方法,支支持boolean、char、char[]、double、、float、int、long、short、String、、Object的直直接输出printlnprintln方法法不同于print的主要之之处在于将将输出信息息打印完之之后,还要要写出行分分割字符串串,默认情情况下,这这个行分割割字符串是是"\n",即输出出一个换行行回车。Printfprintf则是一一种格式化化输出,类类似于c语语言的printf(),实实现了对布布局对齐和和排列的支支持,以及及对数值、、字符串和和日期/时时间数据的的常规格式式和特定于于语言环境境的输出的的支持52表3-2主要的对应格式转换参数类别说明'b','B'常规如果参数arg为null,则结果为"false"。如果arg是一个boolean值或Boolean,则结果为String.valueOf()返回的字符串。否则结果为"true"。'h','H'常规如果参数arg为null,则结果为"null"。否则,结果为调用Integer.toHexString(arg.hashCode())得到的结果。's','S'常规如果参数arg为null,则结果为"null"。如果arg实现Formattable,则调用arg.formatTo。否则,结果为调用arg.toString()得到的结果。'c','C'字符结果是一个Unicode字符'd'整数结果被格式化为十进制整数'o'整数结果被格式化为八进制整数'x','X'整数结果被格式化为十六进制整数'e','E'浮点结果被格式化为用计算机科学记数法表示的十进制数'f'浮点结果被格式化为十进制数'g','G'浮点根据精度和舍入运算后的值,使用计算机科学记数形式或十进制格式对结果进行格式化。'a','A'浮点结果被格式化为带有效位数和指数的十六进制浮点数't','T'日期/时间日期和时间转换字符的前缀。请参阅日期/时间转换。'%'百分比结果为字面值'%'('\u0025')'n'行分隔符结果为特定于平台的行分隔符53publicclassTestPrintf{publicstaticvoidmain(String[]args){inti=100;booleanstatus=true;Stringstr="Welcome";System.out.printf("%d%b%s",i,status,str);}}54格式字符串串产生格式化化输出的每每个方法都都需要格式字符串串和参数列表。格式字符符串是一个个String,它可以包包含固定文文本以及一一个或多个个嵌入的格式说明符符。请考虑以以下示例::Calendarc=...;Strings=St
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年注会考生的市场适应能力与试题及答案
- 地铁聚脲防水施工方案
- 证券市场运作机制试题及答案
- 2024年微生物技术的前瞻性发展试题及答案
- 理财知识补充要点2025年国际金融理财师考试试题及答案
- 高效备考2025年注册会计师考试经验分享试题及答案
- 红外线保健护理设备研发进展考核试卷
- 2025年会计从业资格考试试题及答案
- 2024年项目管理资格考试中考察的核心能力与素质试题及答案
- 项目团队沟通与协调题目及答案
- 综合执法考试试题及答案
- 软式内镜消毒管理与质量标准
- (高清版)DB11∕T2324-2024脚手架钢板立网防护应用技术规程
- DBJ50T-284-2018 工程勘察信息模型设计标准
- 无人机吊装作业安全措施
- 2012年7月国家开放大学专本科《法律文书》期末纸质考试试题及答案
- 《永辉超市营运能力现状、问题及优化建议探析》10000字【论文】
- 2024铁路通信线路施工合同规范范本3篇
- 2025年拉杆箱项目可行性研究报告
- 双全日培训课件
- 个人北京租房合同范本下载
评论
0/150
提交评论