Java程序设计-3-流程控制

上传人:gb****c 文档编号:243149531 上传时间:2024-09-16 格式:PPT 页数:58 大小:515KB
返回 下载 相关 举报
Java程序设计-3-流程控制_第1页
第1页 / 共58页
Java程序设计-3-流程控制_第2页
第2页 / 共58页
Java程序设计-3-流程控制_第3页
第3页 / 共58页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Java,第三章 流程控制,1,理解程序控制的概念,运用条件语句,使用,if, switch,来控制程序的不同执行路径,掌握,for,、,while,和,do,句型结构控制程序的循环执行,理解并能应用,break,、,continue,和,return,调整程序中的流程控制结构。,理解并使用断言对程序进行调试,掌握,Java,语言中不同注释形式的区别,掌握利用,Scanner,类实现基本的输入方法,理解并能使用,System.out,对象中的不同输出方法,掌握基本的编程技巧。,2,程序,程序表现为完成某个功能,(,目标,),而编写的指令集合。,在整体上,程序运行是按照事先编写的指令,(,语句,),从前到后的顺序执行,但在执行的过程中,经常会遇到基于不同条件的决策来执行不同的指令,抑或重复执行事先定义的指令来达到某种目的,但总体上程序总是顺序执行的。,3,一个例子,编写一个程序,声明,3,个整型变量,用来保存,3,个学生的考试分数,计算他们的平均分,(float,类型,),并输出。,4,进一步的,如果某个学生的成绩低于,60,分,则不参与平均分计算。,5,在进一步,如果有,50,个学生的成绩已经保存在一个整型数组中,同样基于上面规则来计算这批学生的平均分。,6,3.1,句、块和空白,构成,Java,程序的最小单位是类,而类则是由属性和方法构成。方法代表了某个具体的能力,具体的一个方法就是由为完成某个功能而编写的若干条语句组成。,7,3.1.1,语句,在,Java,编程语言中,语句是一行由分号,(;),终止的代码,它是一个完整的可执行单元。,例如,totals = a + b + c + d + e + f,;,与下式相同,total = a + b + c +,d + e + f;,8,在,Java,中,主要有以下的语句类型,声明语句,int a=0; /,声明了一个整型变量,Student stu;/,声明了一个类型是,Student,的对象,表达式语句,赋值表达式,自增表达式、方法调用、对象创建都可以和分号一起构成,“,表达式语句,”,System.out.println(,“,Welcome,”,); /,输出字符串,a=Math.abs(-3.1); /,返回绝对值,value=100; /,为变量赋值,a+; /a,自增,Student stu = new Student(,“,张华,”,); /,创建一个,Student,类的实例,实例引用名为,stu,控制语句,9,3.1.2,语句块,一个块,(block),或一个复合语句是以上括号和下括号, ,为边界的语句集合;,块语句也被用来组合属于某个类的语句。,语句块可被嵌套。,/ a block,语句,x = y + 1;,y = x + 1;,10,/,类声明所包含的块语句,public class MyDate ,int day;,int month;,int year;,11,/,一个嵌套块语句的例子,while ( i large ) /,循环语句快开始,用,表示,a = a + i;,if ( a = max ) /,判断语句快开始,用,表示,b = b + a;,a = 0;, /,判断语句块结束,用,表示, /,循环语句快结束,用,表示,12,3.1.3,空白,在源代码元素之间允许空白,空白的数量不限。空白,(,包括空格、,tabs,和新行,),可以改善源代码的视觉感受。,int x;,x = 23 + 54;,int x,x = 23 + 54;,13,3.2,逻辑判断和循环控制,程序控制可以定义为对程序语句的执行顺序进行的规定。,Java,提供了条件语句在两种或更多的情况中做出选择,根据情况执行不同的程序语句;,Java,也提供了更有效的循环语句以控制那些需要重复执行的语句。,14,3.2.1,条件判断与决策,1 if, else,语句,简单的单分支语句,if (,布尔表达式,),语句或块;,例如,if( score 60 ),System.out.println(,“,下次努力哦,!,”,);,15,3.2.1,条件判断与决策,(cont.),简单的双分支语句,if (,布尔表达式,),语句或块;,else,语句或块;,例如,if,(,score 60,),System.out.println(,“,下次努力哦,!,”,);,else,System.out.println(,“,恭喜你通过考试,!,”,);,16,exp,B,A,F,T,选择结构,17,3.2.1,条件判断与决策,(cont.),嵌套的,if ,else,if (,布尔表达式,1),语句或块;,else if(,布尔表达式,2),语句或块;,else,语句或块;,18,例如,if (score 60),System.out.println(“下次努力哦!”);,else if(score 2),if ( y 2),int z = x + y;,System.out.println(“z is ” + z);, else,System.out.println(“x is ” + x);,24,课堂练习,(c.),指出输出结果,x = 2;,y = 3;,if( x 2),if ( y 2),int z = x + y;,System.out.println(“z is ” + z);, else,System.out.println(“x is ” + x);,25,课堂练习,(c.),执行下列,switch,语句后,y,是多少?,x = 3;,switch (x + 3),case 6: y =1;,default: y + = 1;,26,课堂练习,(c.),有一个函数如下,根据指定的,x,,输出,y,值,y=,X x1,2X-1 1= x=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,分别输出为星期一、星期二,.,星期日,如:,Java WeekDay 1,星期一,28,思考题,如何提高多分支下的程序执行效率?,29,3.2.2,循环,循环语句使语句或块的执行得以重复进行。,Java,编程语言支持三种循环构造类型:,for, while,和,do,循环。,for,和,while,循环是在执行循环体之前测试循环条件,do,循环是在执行完循环体之后测试循环条件。,这就意味着,for,和,while,循环可能连一次循环体都未执行, 而,do,循环将至少执行一次循环体。,30,F,S,T,exp,直到型循环,当型循环,T,exp,S,F,31,for,循环的句法是:,for (init_expr; boolean testexpr; alter_expr),statement or block,例如:,for (int i = 0; i 10; i+) ,System.out.println(i = +i);,32,增强的,for,循环,public class ForEnhancedDemo ,public static void main(String, args) ,int, arrayOfInts = 32, 87, 3, 589, 12,1076, 2000, 8, 622, 127 ;,for (int element : arrayOfInts) ,System.out.print(element + );,System.out.println();,33,while,循环的句法:,while (,布尔表达式,),语句或块,int i = 0;,while (i 10) ,System.out.println(i = + i);,i+;,System.out.println(Finally!);,34,do,循环的句法是:,do,语句或块;,while (,布尔测试,),int i = 0;,do ,System.out.println(i = +i);,i+;, while (i 10);,System.out.println(Finally!);,35,思考题,怎么决定使用哪类循环?,36,循环的嵌套,在一个循环体内又包含了另一个完整的循环结构,成为嵌套循环。如,:,while(循环条件),语句;,while (循环条件),语句;,语句;,37,3.2.3,跳转,下列语句可被用在更深层次的控制循环语句中:,break,标注;,continue,标注;,label:,语句;,Label:,被用来标识循环构造的复合语句。,break,语句被用来从,switch,语句、,for,语句等循环语句的块中退出到预先设定的,label,处。当程序运行到,break,标注处时,程序跳出整个循环体的结尾处。,continue,语句被用来略过并跳到循环体的结尾。当程序运行到,continue,标注处时,程序跳至标识外循环的下一次循环开始处继续执行。,38,loop: while (true) ,for (int i=0; i 100; i+) ,switch (c = System.in.read() ,case -1:,case n :,/ 跳到最后处,break loop;,., / end for, / end while,39,课堂练习,下面的循环程序输出结果是什么?,public class ShowErrors,public static void main(String args),for(int i=0;i10;i+);,System.out.println(i+4);,40,课堂练习,(c.),编写一个程序,求出,1+2+3+,+100,的和并输出。,求出,100,200,间的所有素数。,41,用下面的方法声明,编写一个,java,方法,返回接收字符数组中连续字符块的个数:,public static int countRuns( char A ),42,程序流程图,程序流程图也叫程序框图,.,程序流程图的表示以,3,种程序结构为基础。,优点,历史最悠久,使用最广泛,;,流程控制直观,容易掌握,;,至今仍广泛使用,.,缺点,可能诱导程序员过早考虑程序细节,而不是逐步求精,;,对于提高大型系统的可理解性作用不大;,程序随意转移,导致程序结构混乱,;,无法表示数据结构,.,43,起止,输入输出,处理,判断,打印输出,连接,准备,控制流,磁盘文件,换页,循环下界,循环上界,程序流程图的常用符号,:,程序流程图,(Cont.),44,Sequential,A,B,P,F,T,A,B,Selective,P,F,T,B,Call subroutine,A,盒图,(Box Diagram): Nassi &Shneiderman 1973,年提出,又称为,N-S Charts,。,Chapin 1974,年作扩充,故也称为,Chapin charts.,用方框图代替传统的流程图,;,N-S,图,45,x,4,T,F,Do-Until,x,5,i,g,h,f,k,x,1,T,F,b,Do-Until,x,6,a,j,x,2,1,c,Do-While,x,3,2,3,d,e,k,:,例:,N-S,图(,cont.,),46,变量的作用域,每个变量都有一个作用域,就是说这个变量在哪个程序段中起作用。,变量的作用域从它被声明时开始直到遇到声明变量的代码段的结束符,“,”,为止。,只能在变量的作用域内访问它。如果在作用域之外访问变量,编译器将产生一个错误。,作用域的范围,成员变量,局部变量,方法参数,47,变量的作用域,(c.),public class VariableScope ,public static void main(String args) ,int i=10;,int k=10;,System.out.println(i=+i);,System.out.println(k=+k);,System.out.println(i=+i);,System.out.println(k=+k);,48,变量的作用域,(c.),可以注意到,不同作用域内的变量互相不干扰,通常变量是当前最近作用域内定义的该变量,如果要引用更大作用域外的变量,则需要增加限定符,例如我们已经看到过的,this.,49,3.3,基本的输入输出控制,控制台的输入,表,3-2 Scanner,类,nextByte(),将输入信息的下一个标记扫描为一个,byte,。,nextDouble(),将输入信息的下一个标记扫描为一个,double,nextFloat(),将输入信息的下一个标记扫描为一个,float,nextInt()(),将输入信息的下一个标记扫描为一个,int,nextLine(),此扫描器执行当前行,并返回跳过的输入信息,nextLong(),将输入信息的下一个标记扫描为一个,long,nextShort(),将输入信息的下一个标记扫描为一个,short,50,Scanner reader =new Scanner(System.in);,程序,51,字符界面的输出,print,print,是,PrintStream,类提供的一种输出方法,支持,boolean,、,char,、,char,、,double,、,float,、,int,、,long,、,short,、,String,、,Object,的直接输出,println,println,方法不同于,print,的主要之处在于将输出信息打印完之后,还要写出行分割字符串,默认情况下,这个行分割字符串是,n,,即输出一个换行回车。,Printf,printf,则是一种格式化输出,类似于,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,行分隔符,结果为特定于平台的行分隔符,53,public class TestPrintf ,public static void main(String args) ,int i = 100;,boolean status = true;,String str = Welcome;,System.out.printf(%d %b %s,i,status,str);,54,格式字符串,产生格式化输出的每个方法都需要,格式字符串,和,参数列表,。格式字符串是一个,String,,它可以包含固定文本以及一个或多个嵌入的,格式说明符,。请考虑以下示例:,Calendar c = .; String s = String.format(Dukes Birthday: %1$tm %1$te,%1$tY, c);,这里包含三个格式说明符,“,%1$tm,”,、,“,%1$te,”,和,“,%1$tY,”,,它们指出应该如何处理参数以及在文本的什么地方插入它们。,格式字符串的其余部分是包括,Dukes Birthday: ,和其他任何空格或标点符号的固定文本。,55,常规类型、字符类型和数值类型的格式说明符的语法如下:,%argument_index$flagswidth.precisionconversion,可选的,argument_index,是一个十进制整数,用于表明参数在参数列表中的位置。第一个参数由,1$,引用,第二个参数由,2$,引用,依此类推。,可选,flags,是修改输出格式的字符集。有效标志集取决于转换类型。,可选,width,是一个非负十进制整数,表明要向输出中写入的最少字符数。,可选,precision,是一个非负十进制整数,通常用来限制字符数。特定行为取决于转换类型。,所需,conversion,是一个表明应该如何格式化参数的字符。给定参数的有效转换集取决于参数的数据类型。,用来表示日期和时间类型的格式说明符的语法如下:,%argument_index$flagswidthconversion,与参数不对应的格式说明符的语法如下:,%flagswidthconversion,56,long n = 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);,57,double pi = 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);,58,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!