Java程序设计-3-流程控制课件_第1页
Java程序设计-3-流程控制课件_第2页
Java程序设计-3-流程控制课件_第3页
Java程序设计-3-流程控制课件_第4页
Java程序设计-3-流程控制课件_第5页
已阅读5页,还剩113页未读 继续免费阅读

下载本文档

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

文档简介

Java程序设计第三章流程控制1Java程序设计第三章流程控制1理解程序控制的概念运用条件语句,使用if,switch来控制程序的不同执行路径掌握for、while和do句型结构控制程序的循环执行理解并能应用break、continue和return调整程序中的流程控制结构。理解并使用断言对程序进行调试掌握Java语言中不同注释形式的区别掌握利用Scanner类实现基本的输入方法理解并能使用System.out对象中的不同输出方法掌握基本的编程技巧。2理解程序控制的概念2程序程序表现为完成某个功能(目标)而编写的指令集合。在整体上,程序运行是按照事先编写的指令(语句)从前到后的顺序执行,但在执行的过程中,经常会遇到基于不同条件的决策来执行不同的指令,抑或重复执行事先定义的指令来达到某种目的,但总体上程序总是顺序执行的。3程序程序表现为完成某个功能(目标)而编写的指令集合。3一个例子编写一个程序,声明3个整型变量,用来保存3个学生的考试分数,计算他们的平均分(float类型)并输出。4一个例子编写一个程序,声明3个整型变量,用来保存3个学生的考进一步的如果某个学生的成绩低于60分,则不参与平均分计算。5进一步的5在进一步如果有50个学生的成绩已经保存在一个整型数组中,同样基于上面规则来计算这批学生的平均分。6在进一步63.1句、块和空白构成Java程序的最小单位是类,而类则是由属性和方法构成。方法代表了某个具体的能力,具体的一个方法就是由为完成某个功能而编写的若干条语句组成。73.1句、块和空白构成Java程序的最小单位是类,而类则是3.1.1语句在Java编程语言中,语句是一行由分号(;)终止的代码,它是一个完整的可执行单元。例如totals=a+b+c+d+e+f;与下式相同total=a+b+c+d+e+f;83.1.1语句在Java编程语言中,语句是一行由分号(;)在Java中,主要有以下的语句类型声明语句inta=0;//声明了一个整型变量Studentstu;//声明了一个类型是Student的对象表达式语句赋值表达式,自增表达式、方法调用、对象创建都可以和分号一起构成“表达式语句”System.out.println(“Welcome”);//输出字符串a=Math.abs(-3.1);//返回绝对值value=100;//为变量赋值a++;//a自增Studentstu=newStudent(“张华”);//创建一个Student类的实例,实例引用名为stu控制语句9在Java中,主要有以下的语句类型93.1.2语句块一个块(block)或一个复合语句是以上括号和下括号为边界的语句集合;块语句也被用来组合属于某个类的语句。语句块可被嵌套。//ablock语句{x=y+1;y=x+1;}103.1.2语句块一个块(block)或一个复合语句是以上括//类声明所包含的块语句publicclassMyDate{intday;intmonth;intyear;}11//类声明所包含的块语句11//一个嵌套块语句的例子while(i<large){//循环语句快开始,用"{"表示

a=a+i;if(a==max){//判断语句快开始,用"{"表示b=b+a;a=0;}//判断语句块结束,用"}"表示}//循环语句快结束,用"}"表示12//一个嵌套块语句的例子while(i<large3.1.3空白在源代码元素之间允许空白,空白的数量不限。空白(包括空格、tabs和新行)可以改善源代码的视觉感受。{intx;x=23+54;}

{intxx=23+54;}133.1.3空白在源代码元素之间允许空白,空白的数量不限。空白3.2逻辑判断和循环控制程序控制可以定义为对程序语句的执行顺序进行的规定。Java提供了条件语句在两种或更多的情况中做出选择,根据情况执行不同的程序语句;Java也提供了更有效的循环语句以控制那些需要重复执行的语句。143.2逻辑判断和循环控制程序控制可以定义为对程序语句的执行顺3.2.1条件判断与决策1if,else语句简单的单分支语句if(布尔表达式){语句或块;}例如if(score<60){System.out.println(“下次努力哦!”);}153.2.1条件判断与决策1if,else语句153.2.1条件判断与决策(cont.)简单的双分支语句if(布尔表达式){语句或块;}else{语句或块; }例如if(score<60){System.out.println(“下次努力哦!”);}else{System.out.println(“恭喜你通过考试!”);}163.2.1条件判断与决策(cont.)简单的双分支语句16expBAFT选择结构17expBAFT选择结构173.2.1条件判断与决策(cont.)嵌套的if,elseif(布尔表达式1){语句或块;}elseif(布尔表达式2){语句或块; }else{语句或块; }183.2.1条件判断与决策(cont.)嵌套的if,el例如if(score<60){System.out.println(“下次努力哦!”);}elseif(score<80){System.out.println(“恭喜你通过考试!”);}else{System.out.println(“你考的很棒!”);}19例如if(score<60){193.2.1条件判断与决策(cont.)2switch语句switch语句允许程序员更多情况下选择不同的程序逻辑,当情况发生时,按照事先准备好的方法执行。switch语句的句法是:switch(expr1){caseexpr2:statements;break;caseexpr3:statements;break;default: statements;}203.2.1条件判断与决策(cont.)2switch语chargender;//性别…….switch(gender){case‘F’:case‘f’:System.out.println(”女性“);break;case‘M’:case‘m’:System.out.println(”男性“);break;}21chargender;//性别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}22在switch(expr1)语句中,expr1必须与inTA1Fexp=1TA2Fexp=2…TAnFexp=n多分支结构23TA1Fexp=1TA2Fexp=2…TAnFexp=n多分课堂练习指出输出结果x=2;y=3;if(x>2)if(y>2){intz=x+y;System.out.println(“zis”+z);}elseSystem.out.println(“xis”+x);

24课堂练习指出输出结果x=2;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.)指出输出结果x=2;25课堂练习(c.)执行下列switch语句后y是多少?x=3;switch(x+3){case6:y=1;default:y+=1;}26课堂练习(c.)执行下列switch语句后y是多少?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.)有一个函数如下,根据指定的x,输出y值X课堂练习(c.)编写一个程序,根据命令行参数将对应的1、2、3、4、5、6、7分别输出为星期一、星期二….星期日,如:JavaWeekDay1星期一28课堂练习(c.)编写一个程序,根据命令行参数将对应的1、2、思考题如何提高多分支下的程序执行效率?29思考题如何提高多分支下的程序执行效率?293.2.2循环循环语句使语句或块的执行得以重复进行。Java编程语言支持三种循环构造类型:for,while和do循环。for和while循环是在执行循环体之前测试循环条件do循环是在执行完循环体之后测试循环条件。这就意味着for和while循环可能连一次循环体都未执行,而do循环将至少执行一次循环体。303.2.2循环循环语句使语句或块的执行得以重复进行。JavFSTexp直到型循环当型循环TexpSF31FSTexp直到型循环当型循环TexpSF31for循环的句法是:

for(init_expr;booleantestexpr;alter_expr){statementorblock}例如: for(inti=0;i<10;i++){

System.out.println("i="+i); }32for循环的句法是: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();}}33增强的for循环publicclassForEnhancwhile循环的句法:while(布尔表达式){ 语句或块}inti=0;while(i<10){System.out.println("i="+i);i++;}System.out.println("Finally!");34while循环的句法:inti=0;34do循环的句法是:do{语句或块;}while(布尔测试)inti=0;do{System.out.println("i="+i);i++;}while(i<10);System.out.println("Finally!");35do循环的句法是:inti=0;35思考题怎么决定使用哪类循环?36思考题怎么决定使用哪类循环?36循环的嵌套在一个循环体内又包含了另一个完整的循环结构,成为嵌套循环。如:while(循环条件){[语句;]while(循环条件){[语句;]}[语句;]}37循环的嵌套在一个循环体内又包含了另一个完整的循环结构,成为嵌3.2.3跳转下列语句可被用在更深层次的控制循环语句中:break[标注];continue[标注];label:语句;Label:被用来标识循环构造的复合语句。break语句被用来从switch语句、for语句等循环语句的块中退出到预先设定的label处。当程序运行到break[标注]处时,程序跳出整个循环体的结尾处。continue语句被用来略过并跳到循环体的结尾。当程序运行到continue[标注]处时,程序跳至标识外循环的下一次循环开始处继续执行。383.2.3跳转下列语句可被用在更深层次的控制循环语句中:3loop:while(true){ for(inti=0;i<100;i++){ switch(c=System.in.read()){ case-1: case`\n`: //跳到最后处 breakloop; .... } }//endfor}//endwhile39loop:while(true){39课堂练习下面的循环程序输出结果是什么?publicclassShowErrors{publicstaticvoidmain(String[]args){for(inti=0;i<10;i++);System.out.println(i+4);}}40课堂练习下面的循环程序输出结果是什么?publicclas课堂练习(c.)编写一个程序,求出1+2+3+…+100的和并输出。求出100-200间的所有素数。41课堂练习(c.)编写一个程序,求出1+2+3+…+100的和用下面的方法声明,编写一个java方法,返回接收字符数组中连续字符块的个数:publicstaticintcountRuns(char[]A)42用下面的方法声明,编写一个java方法,返回接收字符数组中连程序流程图程序流程图也叫程序框图.程序流程图的表示以3种程序结构为基础。优点历史最悠久,使用最广泛;流程控制直观,容易掌握;至今仍广泛使用.缺点可能诱导程序员过早考虑程序细节,而不是逐步求精;对于提高大型系统的可理解性作用不大;程序随意转移,导致程序结构混乱;无法表示数据结构.43程序流程图程序流程图也叫程序框图.程序流程图的表示以3种程序起止输入输出处理判断打印输出连接准备控制流磁盘文件换页循环下界循环上界程序流程图的常用符号:程序流程图(Cont.)44起止输入输出处理判断打印输出连接准备控制流磁盘文件换页循环下SequentialABPFTABSelectivePFTBCallsubroutineA盒图(BoxDiagram):Nassi&Shneiderman1973年提出,又称为N-SCharts。Chapin1974年作扩充,故也称为Chapincharts.用方框图代替传统的流程图;N-S图45SequentialABPFTABSelectivePFTx4TFDo-Untilx5ighfkx1TFbDo-Untilx6ajx21cDo-Whilex323dek:例:N-S图(cont.)46x4TFDo-Untilx5ighfkx1TFbDo-Un变量的作用域每个变量都有一个作用域,就是说这个变量在哪个程序段中起作用。变量的作用域从它被声明时开始直到遇到声明变量的代码段的结束符“}”为止。只能在变量的作用域内访问它。如果在作用域之外访问变量,编译器将产生一个错误。作用域的范围成员变量局部变量方法参数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.)publicclassVariabl变量的作用域(c.)可以注意到,不同作用域内的变量互相不干扰,通常变量是当前最近作用域内定义的该变量,如果要引用更大作用域外的变量,则需要增加限定符,例如我们已经看到过的this.49变量的作用域(c.)可以注意到,不同作用域内的变量互相不干扰3.3基本的输入输出控制控制台的输入表3-2Scanner类nextByte()将输入信息的下一个标记扫描为一个byte。nextDouble()将输入信息的下一个标记扫描为一个doublenextFloat()将输入信息的下一个标记扫描为一个floatnextInt()()将输入信息的下一个标记扫描为一个intnextLine()此扫描器执行当前行,并返回跳过的输入信息nextLong()将输入信息的下一个标记扫描为一个longnextShort()将输入信息的下一个标记扫描为一个short503.3基本的输入输出控制控制台的输入表3-2ScannScannerreader=newScanner(System.in);程序51Scannerreader=newScanner(Sy字符界面的输出printprint是PrintStream类提供的一种输出方法,支持boolean、char、char[]、double、float、int、long、short、String、Object的直接输出printlnprintln方法不同于print的主要之处在于将输出信息打印完之后,还要写出行分割字符串,默认情况下,这个行分割字符串是"\n",即输出一个换行回车。Printfprintf则是一种格式化输出,类似于c语言的printf(),实现了对布局对齐和排列的支持,以及对数值、字符串和日期/时间数据的常规格式和特定于语言环境的输出的支持52字符界面的输出print52表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'行分隔符结果为特定于平台的行分隔符53表3-2主要的对应格式转换参数类别说明'b','BpublicclassTestPrintf{ publicstaticvoidmain(String[]args){ inti=100; booleanstatus=true; Stringstr="Welcome"; System.out.printf("%d%b%s",i,status,str); }}54publicclassTestPrintf{54格式字符串产生格式化输出的每个方法都需要格式字符串和参数列表。格式字符串是一个String,它可以包含固定文本以及一个或多个嵌入的格式说明符。请考虑以下示例:Calendarc=...;Strings=String.format("Duke'sBirthday:%1$tm%1$te,%1$tY",c);这里包含三个格式说明符“%1$tm”、“%1$te”和“%1$tY”,它们指出应该如何处理参数以及在文本的什么地方插入它们。格式字符串的其余部分是包括"DukesBirthday:"和其他任何空格或标点符号的固定文本。55格式字符串产生格式化输出的每个方法都需要格式字符串和参数常规类型、字符类型和数值类型的格式说明符的语法如下:%[argument_index$][flags][width][.precision]conversion可选的argument_index是一个十进制整数,用于表明参数在参数列表中的位置。第一个参数由"1$"引用,第二个参数由"2$"引用,依此类推。可选flags是修改输出格式的字符集。有效标志集取决于转换类型。可选width是一个非负十进制整数,表明要向输出中写入的最少字符数。可选precision是一个非负十进制整数,通常用来限制字符数。特定行为取决于转换类型。所需conversion是一个表明应该如何格式化参数的字符。给定参数的有效转换集取决于参数的数据类型。用来表示日期和时间类型的格式说明符的语法如下:%[argument_index$][flags][width]conversion与参数不对应的格式说明符的语法如下:%[flags][width]conversion56常规类型、字符类型和数值类型的格式说明符的语法如下:56longn=461012;System.out.printf("%d%n",n);System.out.printf("%08d%n",n);System.out.printf("%+8d%n",n);System.out.printf("%,8d%n",n); System.out.printf("%+,8d%n%n",n); 57longn=461012;57doublepi=Math.PI;System.out.printf("%f%n",pi);System.out.printf("%.3f%n",pi);System.out.printf("%10.3f%n",pi); System.out.printf("%-10.3f%n",pi); 58doublepi=Math.PI;58演讲完毕,谢谢观看!演讲完毕,谢谢观看!Java程序设计第三章流程控制60Java程序设计第三章流程控制1理解程序控制的概念运用条件语句,使用if,switch来控制程序的不同执行路径掌握for、while和do句型结构控制程序的循环执行理解并能应用break、continue和return调整程序中的流程控制结构。理解并使用断言对程序进行调试掌握Java语言中不同注释形式的区别掌握利用Scanner类实现基本的输入方法理解并能使用System.out对象中的不同输出方法掌握基本的编程技巧。61理解程序控制的概念2程序程序表现为完成某个功能(目标)而编写的指令集合。在整体上,程序运行是按照事先编写的指令(语句)从前到后的顺序执行,但在执行的过程中,经常会遇到基于不同条件的决策来执行不同的指令,抑或重复执行事先定义的指令来达到某种目的,但总体上程序总是顺序执行的。62程序程序表现为完成某个功能(目标)而编写的指令集合。3一个例子编写一个程序,声明3个整型变量,用来保存3个学生的考试分数,计算他们的平均分(float类型)并输出。63一个例子编写一个程序,声明3个整型变量,用来保存3个学生的考进一步的如果某个学生的成绩低于60分,则不参与平均分计算。64进一步的5在进一步如果有50个学生的成绩已经保存在一个整型数组中,同样基于上面规则来计算这批学生的平均分。65在进一步63.1句、块和空白构成Java程序的最小单位是类,而类则是由属性和方法构成。方法代表了某个具体的能力,具体的一个方法就是由为完成某个功能而编写的若干条语句组成。663.1句、块和空白构成Java程序的最小单位是类,而类则是3.1.1语句在Java编程语言中,语句是一行由分号(;)终止的代码,它是一个完整的可执行单元。例如totals=a+b+c+d+e+f;与下式相同total=a+b+c+d+e+f;673.1.1语句在Java编程语言中,语句是一行由分号(;)在Java中,主要有以下的语句类型声明语句inta=0;//声明了一个整型变量Studentstu;//声明了一个类型是Student的对象表达式语句赋值表达式,自增表达式、方法调用、对象创建都可以和分号一起构成“表达式语句”System.out.println(“Welcome”);//输出字符串a=Math.abs(-3.1);//返回绝对值value=100;//为变量赋值a++;//a自增Studentstu=newStudent(“张华”);//创建一个Student类的实例,实例引用名为stu控制语句68在Java中,主要有以下的语句类型93.1.2语句块一个块(block)或一个复合语句是以上括号和下括号为边界的语句集合;块语句也被用来组合属于某个类的语句。语句块可被嵌套。//ablock语句{x=y+1;y=x+1;}693.1.2语句块一个块(block)或一个复合语句是以上括//类声明所包含的块语句publicclassMyDate{intday;intmonth;intyear;}70//类声明所包含的块语句11//一个嵌套块语句的例子while(i<large){//循环语句快开始,用"{"表示

a=a+i;if(a==max){//判断语句快开始,用"{"表示b=b+a;a=0;}//判断语句块结束,用"}"表示}//循环语句快结束,用"}"表示71//一个嵌套块语句的例子while(i<large3.1.3空白在源代码元素之间允许空白,空白的数量不限。空白(包括空格、tabs和新行)可以改善源代码的视觉感受。{intx;x=23+54;}

{intxx=23+54;}723.1.3空白在源代码元素之间允许空白,空白的数量不限。空白3.2逻辑判断和循环控制程序控制可以定义为对程序语句的执行顺序进行的规定。Java提供了条件语句在两种或更多的情况中做出选择,根据情况执行不同的程序语句;Java也提供了更有效的循环语句以控制那些需要重复执行的语句。733.2逻辑判断和循环控制程序控制可以定义为对程序语句的执行顺3.2.1条件判断与决策1if,else语句简单的单分支语句if(布尔表达式){语句或块;}例如if(score<60){System.out.println(“下次努力哦!”);}743.2.1条件判断与决策1if,else语句153.2.1条件判断与决策(cont.)简单的双分支语句if(布尔表达式){语句或块;}else{语句或块; }例如if(score<60){System.out.println(“下次努力哦!”);}else{System.out.println(“恭喜你通过考试!”);}753.2.1条件判断与决策(cont.)简单的双分支语句16expBAFT选择结构76expBAFT选择结构173.2.1条件判断与决策(cont.)嵌套的if,elseif(布尔表达式1){语句或块;}elseif(布尔表达式2){语句或块; }else{语句或块; }773.2.1条件判断与决策(cont.)嵌套的if,el例如if(score<60){System.out.println(“下次努力哦!”);}elseif(score<80){System.out.println(“恭喜你通过考试!”);}else{System.out.println(“你考的很棒!”);}78例如if(score<60){193.2.1条件判断与决策(cont.)2switch语句switch语句允许程序员更多情况下选择不同的程序逻辑,当情况发生时,按照事先准备好的方法执行。switch语句的句法是:switch(expr1){caseexpr2:statements;break;caseexpr3:statements;break;default: statements;}793.2.1条件判断与决策(cont.)2switch语chargender;//性别…….switch(gender){case‘F’:case‘f’:System.out.println(”女性“);break;case‘M’:case‘m’:System.out.println(”男性“);break;}80chargender;//性别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}81在switch(expr1)语句中,expr1必须与inTA1Fexp=1TA2Fexp=2…TAnFexp=n多分支结构82TA1Fexp=1TA2Fexp=2…TAnFexp=n多分课堂练习指出输出结果x=2;y=3;if(x>2)if(y>2){intz=x+y;System.out.println(“zis”+z);}elseSystem.out.println(“xis”+x);

83课堂练习指出输出结果x=2;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);

84课堂练习(c.)指出输出结果x=2;25课堂练习(c.)执行下列switch语句后y是多少?x=3;switch(x+3){case6:y=1;default:y+=1;}85课堂练习(c.)执行下列switch语句后y是多少?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。86课堂练习(c.)有一个函数如下,根据指定的x,输出y值X课堂练习(c.)编写一个程序,根据命令行参数将对应的1、2、3、4、5、6、7分别输出为星期一、星期二….星期日,如:JavaWeekDay1星期一87课堂练习(c.)编写一个程序,根据命令行参数将对应的1、2、思考题如何提高多分支下的程序执行效率?88思考题如何提高多分支下的程序执行效率?293.2.2循环循环语句使语句或块的执行得以重复进行。Java编程语言支持三种循环构造类型:for,while和do循环。for和while循环是在执行循环体之前测试循环条件do循环是在执行完循环体之后测试循环条件。这就意味着for和while循环可能连一次循环体都未执行,而do循环将至少执行一次循环体。893.2.2循环循环语句使语句或块的执行得以重复进行。JavFSTexp直到型循环当型循环TexpSF90FSTexp直到型循环当型循环TexpSF31for循环的句法是:

for(init_expr;booleantestexpr;alter_expr){statementorblock}例如: for(inti=0;i<10;i++){

System.out.println("i="+i); }91for循环的句法是: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();}}92增强的for循环publicclassForEnhancwhile循环的句法:while(布尔表达式){ 语句或块}inti=0;while(i<10){System.out.println("i="+i);i++;}System.out.println("Finally!");93while循环的句法:inti=0;34do循环的句法是:do{语句或块;}while(布尔测试)inti=0;do{System.out.println("i="+i);i++;}while(i<10);System.out.println("Finally!");94do循环的句法是:inti=0;35思考题怎么决定使用哪类循环?95思考题怎么决定使用哪类循环?36循环的嵌套在一个循环体内又包含了另一个完整的循环结构,成为嵌套循环。如:while(循环条件){[语句;]while(循环条件){[语句;]}[语句;]}96循环的嵌套在一个循环体内又包含了另一个完整的循环结构,成为嵌3.2.3跳转下列语句可被用在更深层次的控制循环语句中:break[标注];continue[标注];label:语句;Label:被用来标识循环构造的复合语句。break语句被用来从switch语句、for语句等循环语句的块中退出到预先设定的label处。当程序运行到break[标注]处时,程序跳出整个循环体的结尾处。continue语句被用来略过并跳到循环体的结尾。当程序运行到continue[标注]处时,程序跳至标识外循环的下一次循环开始处继续执行。973.2.3跳转下列语句可被用在更深层次的控制循环语句中:3loop:while(true){ for(inti=0;i<100;i++){ switch(c=System.in.read()){ case-1: case`\n`: //跳到最后处 breakloop; .... } }//endfor}//endwhile98loop:while(true){39课堂练习下面的循环程序输出结果是什么?publicclassShowErrors{publicstaticvoidmain(String[]args){for(inti=0;i<10;i++);System.out.println(i+4);}}99课堂练习下面的循环程序输出结果是什么?publicclas课堂练习(c.)编写一个程序,求出1+2+3+…+100的和并输出。求出100-200间的所有素数。100课堂练习(c.)编写一个程序,求出1+2+3+…+100的和用下面的方法声明,编写一个java方法,返回接收字符数组中连续字符块的个数:publicstaticintcountRuns(char[]A)101用下面的方法声明,编写一个java方法,返回接收字符数组中连程序流程图程序流程图也叫程序框图.程序流程图的表示以3种程序结构为基础。优点历史最悠久,使用最广泛;流程控制直观,容易掌握;至今仍广泛使用.缺点可能诱导程序员过早考虑程序细节,而不是逐步求精;对于提高大型系统的可理解性作用不大;程序随意转移,导致程序结构混乱;无法表示数据结构.102程序流程图程序流程图也叫程序框图.程序流程图的表示以3种程序起止输入输出处理判断打印输出连接准备控制流磁盘文件换页循环下界循环上界程序流程图的常用符号:程序流程图(Cont.)103起止输入输出处理判断打印输出连接准备控制流磁盘文件换页循环下SequentialABPFTABSelectivePFTBCallsubroutineA盒图(BoxDiagram):Nassi&Shneiderman1973年提出,又称为N-SCharts。Chapin1974年作扩充,故也称为Chapincharts.用方框图代替传统的流程图;N-S图104SequentialABPFTABSelectivePFTx4TFDo-Untilx5ighfkx1TFbDo-Untilx6ajx21cDo-Whilex323dek:例:N-S图(cont.)105x4TFDo-Untilx5ighfkx1TFbDo-Un变量的作用域每个变量都有一个作用域,就是说这个变量在哪个程序段中起作用。变量的作用域从它被声明时开始直到遇到声明变量的代码段的结束符“}”为止。只能在变量的作用域内访问它。如果在作用域之外访问变量,编译器将产生一个错误。作用域的范围成员变量局部变量方法参数106变量的作用域每个变量都有一个作用域,就是说这个变量在哪个程序变量的作用域(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); }}107变量的作用域(c.)publicclassVariabl变量的作用域(c.)可以注意到,不同作用域内的变量互相不干扰,通常变量是当前最近作用域内定义的该变量,如果要引用更大作用域外的变量,则需要增加限定符,例如我们已经看到过的this.108变量的作用域(c.)可以注意到,不同作用域内的变量互相不干扰3.3基本的输入输出控制控制台的输入表3-2Scanner类nextByte()将输入信息的下一个标记扫描为一个byte。nextDouble()将输入信息的下一个标记扫描为一个doublenextFloat()将输入信息的下一个标记扫描为一个floatnextInt()()将输入信息的下一个标记扫描为一个intnextLine()此扫描器执行当前行,并返回跳过的输入信息nextLong()将输入信息的下一个标记扫描为一个longnextShort()将输入信息的下一个标记扫描为一个short1093.3基本的输入输出控制控制台的输入表3-2ScannScannerreader=newScanner(System.in);程序110Scannerreader=newScanner(Sy字符界面的输出printprint是PrintStream类提供的一种输出方法,支持boolean、char、char[]、double、float、int、long、short、String、Object的直接输出printlnprintln方法不同于print的主要之处在于将输出信息打印完之后,还要写出行分割字符串,默认情况下,这个行分割字符串是"\n",即输出一个换行回车。Printfprintf则是一种格式化输出,类似于c语言的printf(),实现了对布局对齐和排列的支持,以及对数值、字符串和日期/时间数据的常规格式和特定于语言环境的输出的支持111字符界面的输出print52表3-2主要的对应格式转换

温馨提示

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

评论

0/150

提交评论