JAVA流程控制语句培训概述_第1页
JAVA流程控制语句培训概述_第2页
JAVA流程控制语句培训概述_第3页
JAVA流程控制语句培训概述_第4页
JAVA流程控制语句培训概述_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

1、第三章 JAVA流程控制语句主讲教师:主讲教师:毛科亮毛科亮本章内容语句概述 Java语言的语句分类 结构化程序设计的三种基本流程分支语句 If语句 If-else语句 Switch语句循环语句 while循环语句 do-while语句 for语句转移语句 break语句 continue语句 return语句常用的程序设计方法枚举法、地推法、递归法 简单图形的输出 格式化的输入与输出从键盘输入数据格式化的输出语句的概念java程序的执行遵循一定的流程,流程是程序执行的顺序。流程控制语句是控制程序中各语句执行顺序的语句,是程序中非常关键和基本的部分。流程控制语句可以把单个的语句组合成有意义的、

2、能够完成一定功能的小逻辑块。一、Java语句概述语句与结构化程序设计v在算法语言中,数据类型描述数据的性质,表达式描述对数据的运算,语句描述对数据的操作。v程序由一系列语句组成。vJava语言虽然是一种面向对象的计算机语言,但在一个局部,例如方法内、块语句内仍然需要面向过程的程序设计和方法。v作为面向过程程序设计精华的结构化程序设计思想,仍然是面向对象程序设计方法的基石。一、Java语句概述结构化程序设计的三种基本流程:尽管现实世界的问题是复杂的、千变万化的,但与之相对应的计算机算法流程,只有三种基本结构-顺序结构、选择结构、循环结构。每种结构都是单入口、单出口;每一部分都会被执行到;没有死循

3、环。 A B P A B P 循环体真假假真Java语言提供支持结构化程序设计的所有语言。一、Java语句概述 Java语言提供结构化语句实现程序的流程控制。 表达式语句 顺序结构 空语句 复合语句 条件语句 选择语句语句 开关 语句 switch while 循环语句 do-while for break 转移语句 continue return 一、Java语句概述一、Java语句概述v 在java语言中,语句以分号“;”为结束标志。v特殊的是,块语由其他语句组成,其本身不用分号结束。内嵌有块语句并以块语句结尾的语句,也不需要用分号结尾。vava语句按性质可分为:说明性语句、操作性语句。v

4、Java语句按功能可分为: 空语句、标号语句、声明语句、表达式语句、分支语句、循 环语句、断言语句、跳转语句、同步语句、异常语句、块语 句等。一、Java语句概述一、Java语句概述空语句: 仅包含一个分号。 例如:for(int i=1;i3) System .out .println (a3); System .out .print (ok!);上面的执行结果是什么上面的执行结果是什么?IF语句语句二、Java分支语句一、Java语句概述class Maxpublic double getMax(double a,double b)double max; max=a;if(maxb)max

5、=b;return max;public class Ex3_1public static void main(String args) Max obj=new Max();System.out.println(max=+obj.getMax(3.14,3.1415926);判断两个数的最大值格式:格式: if (表达件表达件) 语句语句1;else 语句语句2; 功能:首先计算表达式,若值为真,则执行语句功能:首先计算表达式,若值为真,则执行语句1,否则执行语句否则执行语句2。 IF-else语句语句二、Java分支语句一、Java语句概述import java.util.*; class

6、Leappublic boolean isLeap(int year)if(year%4=0)&(year%100!=0)|(year%400=0)return true;else return false; public class Ex3_2public static void main(String args)int year;System.out.println(输入一个年份:);Scanner reader=new Scanner(System.in);year=reader.nextInt();Leap obj=new Leap();if(obj.isLeap(year)S

7、ystem.out.println(year+是闰年。);elseSystem.out.println(year+不是闰年。);闰年问题if (条件条件1) /程序代码程序代码; else if ( 条件条件2) /程序代码程序代码; else if ( 条件条件3) /程序代码程序代码; 注意注意:只要任何一个条件成立只要任何一个条件成立.程序就不会对下一个条件进行判断和再执行了。程序就不会对下一个条件进行判断和再执行了。IF-else if 语句语句二、Java分支语句public class Ex3_3public static void main(String args)(new Le

8、tter().judgeLetter(); class Letterpublic void judgeLetter() char ch; ch=(char)(java.lang.Math.random()*128); if(ch=a&ch=A&ch=0&ch=9) System.out.println(ch+是数字!); else System.out.println(ch+是其他符号!); 检查用random()方法产生的一个字符,判断是否为英文大写字母、小写字母、数字或是其他符号,并输出相应信息。IF嵌套语句嵌套语句if (条件条件1) if ( 条件条件2) /程

9、序代码程序代码; else /程序代码程序代码; else if ( 条件条件3) /程序代码程序代码; else /程序代码程序代码; .IF嵌套语句嵌套语句二、Java分支语句switch( 表达式 ) case 值1: 语句1; break; case 值2: 语句2; break; case 值3: 语句3; break; .case 值N: 语句N; break; default:语句N+1多分支语句多分支语句 switch二、Java分支语句二、Java分支语句功能:首先计算表达式的值,然后在switch语句中寻找与该表达式的值相匹配的case值。 表达式的返回值类型必须是这几种类

10、型一 int , byte , char , short。 case子句中的值必须是常量,而且所有case子句中的值应是不同的。 default子句是可选的。 break语句用来在执行完一个case分支后,使程序跳出switch语句,即终止switch语句的执行(在一些特殊情况下,多个不同的case值要执行一组相同的操作这时可以不用break,不写break时执行自该case开始到下一次找到break语句为止) 多分支语句多分支语句 switch二、Java分支语句二、Java分支语句import java.util.*;public class Ex3_4public static void

11、 main(String args)(new Grade().toGrade();class Gradepublic void toGrade() int score,m; Scanner reader=new Scanner(System.in); System.out.println(输入成绩:); score=reader.nextInt(); if(score100) System.out.println(data error!); else m=score/10; switch(m) case 9: case 10: System.out.println(The grade is A

12、.);break; case 8: System.out.println(The grade is B.);break; case 7: System.out.println(The grade is C.);break; case 6: System.out.println(The grade is D.);break; default: System.out.println(The grade is E.);break; 输入百分成绩,输出成绩等级。循环语句的作用是反复执行一段代码,直到满循环语句的作用是反复执行一段代码,直到满足终止循环的条件为止。足终止循环的条件为止。Java语言中提供

13、的循语言中提供的循环语句有:环语句有: while语句语句 do-while语句语句 for语句语句循环语句循环语句三、Java循环语句三、Java循环语句While ( 条件条件 ) /循环体循环体 注意:注意:(1)此语句是先判断条件,再确定是否执行语句或程)此语句是先判断条件,再确定是否执行语句或程 序块。序块。(2)条件为)条件为true时,执行循环体的语句或程序块。反时,执行循环体的语句或程序块。反 之,不执行循环体。之,不执行循环体。(3)在循环体中要有改变条件的语句,否则会成为死)在循环体中要有改变条件的语句,否则会成为死 循环。循环。while语句语句三、Java循环语句表达式

14、值表达式值语语 句句结束结束While 语句语句do /循环体;循环体; while (条件条件) ;注意:注意:(1)此语句是先执行一次循环体,再判断条件。此语句是先执行一次循环体,再判断条件。(2)条件为条件为true时,再次执行时,再次执行 循环体的语句或程序块。循环体的语句或程序块。(3)在循环体中要有改变条件的语句在循环体中要有改变条件的语句,否则会成为死循环。否则会成为死循环。(4)do-while循环语句即是至少都要执行一次的。循环语句即是至少都要执行一次的。do-while语句语句三、Java循环语句三、Java循环语句语语 句句表达式值表达式值结束结束do-While 语句语

15、句for (设定初始值设定初始值 ; 条件限定条件限定 ; 修改控制变量修改控制变量) /程序代码;程序代码; 不限定的循环(死循环)不限定的循环(死循环) for ( ; ; ) /程序代码;程序代码; 多个变量进行定义多个变量进行定义 for ( int i=0,j=100 ; ij ; i+ , j- ) /程序代码;程序代码; For语句语句三、Java循环语句三、Java循环语句for (int i=0 ; i100 ; i+) for (int j=0 ; ji; j+) /程序块;程序块; 注意:在我们的实际开发过程中,注意:在我们的实际开发过程中,for循环语句使用的循环语句使

16、用的比较多比较多,重点把握!重点把握!For循环嵌套循环嵌套三、Java循环语句三、Java循环语句/ 输出1100内前5个可以被3整除的数。public class Ex3_5 public static void main(String args) int num = 0, i = 1; while (i = 100) if (i % 3 = 0) System.out.print(i + ); num+; if (num = 5) break; i+; /输出101200内的质数,public class Ex3_6 public static void main(String args

17、) for (int i=101; i200; i+=2) boolean f = true; for (int j = 2; j i; j+) if (i % j = 0) f = false; break; if (!f) continue; System.out.print( + i); 三、Java循环语句三、Java循环语句JAVA中的跳转语句有:中的跳转语句有: break语句语句 continue语句语句 返回语句返回语句return跳转语句跳转语句四、Java跳转语句break语句用于终止某个语句块或循环体的执行语句用于终止某个语句块或循环体的执行 break; break语句

18、出现在多层嵌套的语句块中时,可以通过语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块标签指明要终止的是哪一层语句块 label1: label2: label3: break label2; break语句语句四、Java跳转语句四、Java跳转语句break语句示例语句示例public class Ex3_7 public static void main( String args ) for( int i=1; i= 10; i+ ) if( i = 5 ) break; System.out.println( i= + i ); System.out.println

19、( Done ); 四、Java跳转语句四、Java跳转语句外层跳转外层跳转:break语句语句在在switch语中,语中,break语句用来终止语句用来终止switch语句的执行。语句的执行。在在Java中,可以为每个代码块加一个标号,一个代码块通常是用大中,可以为每个代码块加一个标号,一个代码块通常是用大括号括号括起来的一段代码。加标号的格式如下:括起来的一段代码。加标号的格式如下:BlockLabel: codeBlock break语句的第二种使用情况就是跳出它所指定的块,并从紧跟语句的第二种使用情况就是跳出它所指定的块,并从紧跟该块的第一条语句处执行。例如:该块的第一条语句处执行。例

20、如:break BlockLabel;break语句语句a: /标记代码块标记代码块ab: /标记代码块标记代码块bc: /标记代码块标记代码块cbreak b; /此处的语句块不被执行此处的语句块不被执行 /此处的语句块不被执行此处的语句块不被执行 /从此处开始执行从此处开始执行 四、Java跳转语句四、Java跳转语句lbreak 语句用于终止某个语句块的执行。用在循环语句体中,可以强行退出循环;例如:public class Ex3_8 public static void main(String args) int stop = 4; for (int i = 1; i = 10; i

21、+) /当i等于stop时,退出循环 if (i = stop) break; System.out.println( i= + i); i = 1i = 2i = 3lcontinue 语句用在循环语句体中,用于终止某次循环过程,跳过循环体中 continue 语句下面未执行的循环,开始下一次循环过程;例如:public class Ex3_9 public static void main(String args) int skip = 4; for (int i = 1; i = 5; i+) /当i等于skip时,跳过当次循环 if (i = skip) continue; Syste

22、m.out.println(i = + i); i = 1i = 2i = 3i = 52.5.4四、Java跳转语句四、Java跳转语句continue语句语句continue语句用于跳过某个循环语句块的一次执行语句用于跳过某个循环语句块的一次执行 continue语句出现在多层嵌套的循环语句体中时,可语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环。以通过标签指明要跳过的是哪一层循环。 四、Java跳转语句四、Java跳转语句continue语句实例语句实例public class Ex3_10 public static void main( String arg

23、s ) for( int i=1; i= 10; i+ ) if( i = 5 | i = 7 ) continue; System.out.println( i= + i ); System.out.println( Done ); 四、Java跳转语句四、Java跳转语句外层跳转外层跳转:continue语句语句 continue语句用来结束本次循环,跳过循环体中下面尚未执行的语语句用来结束本次循环,跳过循环体中下面尚未执行的语 句,接着进行终止条件的判断,句,接着进行终止条件的判断,以决定是否继续循环以决定是否继续循环。对于。对于for语语 句在进行终止条件的判断前,还要先执行迭代语句。

24、也可以用句在进行终止条件的判断前,还要先执行迭代语句。也可以用continue 跳转到括号指明的外层循环中跳转到括号指明的外层循环中 格式为格式为 continue outerLable;例如例如 outer: for( int i=0; i10; i+ ) /外层循环外层循环inner: for( int j=0; j10; j+ ) /内层循环内层循环if( ij )continue outer; 四、Java跳转语句四、Java跳转语句返回语句返回语句returnreturn语句从当前方法中退出,返回到调用该方法的语句语句从当前方法中退出,返回到调用该方法的语句处,并从紧跟该语句的下一条

25、语句继续程序的执行。返处,并从紧跟该语句的下一条语句继续程序的执行。返回语句有两种格式:回语句有两种格式:return expression;return;return语句通常用在一个方法体的最后语句通常用在一个方法体的最后,否则会产生编译否则会产生编译错误错误,除非用在除非用在if-else语句中。语句中。四、Java跳转语句1、枚举法(穷举法)就是把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出。五、常用的程序设计方法38常用算法1、枚举法(穷举法)“笨人之法”: 把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出。【例一】百元买百鸡:用一百元钱买一百只鸡。已知公鸡5元/

26、只,母鸡3元/只,小鸡1元/3只。分析: 这是个不定方程三元一次方程组问题(三个变量,两个方程) xyz=100 5x3yz/3=100 设公鸡为x只,母鸡为y只,小鸡为z只。五、常用的程序设计方法class Ex3_11 public static void main(String arg) int x,y,z; for (x=0;x=100;x+) for (y=0;y=100;y+) z=100-x-y; if (5*x+3*y+z/3.0=100) System.out.println(cocks=+x+, +hens=+y+,+chickens=+z); 结果: cocks =0,

27、hens =25, chickens =75 cocks =4, hens =18, chickens =78 cocks =8, hens =11, chickens =81 cocks =12, hens =4, chickens =84五、常用的程序设计方法另一种计算方法:class HundredYuanChicken public void printChicken()int x,y,z;for(x=0;x=100;x+)for(y=0;y=100;y+) for(z=0;z=100;z+) if(x+y+z=100&5*x+3*y+z/3.0=100) System.out

28、.println(公鸡=+x+母鸡=+y+小鸡=+z); public class Test303 public static void main(String args) (new HundredYuanChicken().printChicken(); 五、常用的程序设计方法412、递推法(迭代法)基本思想:不断由已知值推出新值,直到求得解为止。迭代初值、迭代公式和迭代终止条件是迭代法的三要素例:斐波纳契数列。前两个数都是1,第三个数是前两个数之和,以后的每个数都是其前两个数之和。 各数之间的一种递推关系,即: Fn = Fn-1 + Fn-2,F1 = F2 =1本题的三要素是: 迭代初

29、值:x=1, y=1 迭代公式:z=y+x 终止条件:共计算n-2次五、常用的程序设计方法42public class Ex3_12 static int fib(int n) int first = 1; int second = 1; int sum = first + second; int i = 2; while(+i n) first = second; second = sum; sum = first + second; return sum; public static void main(String args) System.out.println(f20= + fib(

30、20); 程序的运行结果如下: java FibIterative f20=6765五、常用的程序设计方法【累加型】类型诸如 + 求其前n项之和的编程题。累加型算法累加型算法 若设若设i为循环变量,为循环变量,s为前为前n项累加之和,则程序的项累加之和,则程序的基本结构为:基本结构为: s=0; for( i=1 ;i=n ;i+ ) s=s+;五、常用的程序设计方法44编程求11/2+1/31/4+1/5 +1/991/100累加型算法累加型算法程序基本结构为:程序基本结构为: s=0; for( i=1;i=n;i+ ) s=s+;运行结果:Sum=0.6881719 五、常用的程序设计方

31、法451) class Ex3_132) static float mySum(int n) 3) float k = 1f;4) float sum = 0.0f;5) for(int i=1;i=n;i+)6) 7) sum=sum+k/i;8) k = -k;9) 10) return sum; 11) 12) public static void main(String args) 13) System.out.println(Sum100= + mySum(100); 14) 五、常用的程序设计方法46【阶乘型】类型诸如 求其前n项之积的编程题。阶乘型算法阶乘型算法 若设若设i为循环

32、变量,为循环变量,s为前为前n项相乘之积,则程序项相乘之积,则程序的基本结构为:的基本结构为: s=1; for( i=1 ;i=n ;i+ ) s=s*;五、常用的程序设计方法47class Ex3_14 static int myFac(int n) int fac = 1; for(int i=1;i=n;i+) fac=fac*i; return fac; public static void main(String args) System.out.println(Fac10= + myFac(5); n!运行结果:Fac10=3628800.0五、常用的程序设计方法48编程求n!

33、=1!+2!+3!+n! (n由键盘输入)在同一个循环中 先阶乘,后累加五、常用的程序设计方法491) class Ex3_15 2) static int method(int n) 3) int s=0,p=1;4) for(int i=1; i=n; i+) 5) p = p * i; /i!6) s = s + p;7) 8) return s;9) 10) public static void main(String args) 11) int r = method(5);12) System.out.println(r= + r);13) 14) 运行结果:r=153五、常用的程序

34、设计方法50a+aa+aaa+aa=?import java.io.*;class Ex3_16 public static void main(String args)throws IOException BufferedReader br=new BufferedReader(new InputStreamReader(System.in); System.out.print(请输入一个长度请输入一个长度n:); String str=br.readLine(); /转换字符串为整型数转换字符串为整型数 int n=Integer.parseInt(str);五、常用的程序设计方法51 S

35、ystem.out.print(请输入一个整数a:);str=br.readLine(); /输入字符存入字符串int a=Integer.parseInt(str);/转换字符串为整型数据int i=1,sn=0,tn=0;while(i 2 )public class Ex3_18 public static void main(String arg) System.out.println(f(40); public static int f(int n) if (n = 1 | n = 2) return 1; else return f(n - 1) + f(n - 2); 五、常用的

36、程序设计方法mainf5f4f3f2f1f2f3f2f1public static int f(int n) if (n = 1 | n = 2) return 1; else return f(n - 1) + f(n - 2); 五、常用的程序设计方法564、简单图形的输出编程显示以下图形(共N 行,N 由键盘输入)。 * * * * * * * * * * * * * * * * * * * * * * * * *此类题目分析的要点是:通过分析,找出每行空格、* 与行号i、列号j及总行数N的关系。其循环结构可用右图表示。分析:(设N=5)第1行 4个空格=5-1 1个“*”=2*行号-1

37、第2行 3个空格=5-2 3个“*”=2*行号-1第3行 2个空格=5-3 5个“*”=2*行号-1第4行 1个空格=5-4 7个“*”=2*行号-1第5行 0个空格=5-5 9个“*”=2*行号-1由此归纳出:第i行的空格数N-i个; 第i行的“*”数是2i-1个。 五、常用的程序设计方法57编程显示以下图形(共N 行,N 由键盘输入)。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *算法:分成两部分完成:N=9行 N1=(N+1)/2=5 N2=N-N1=4五、常用的程序设计

38、方法58public class Ex3_19public static void main(String args) int n=9; int middle=(n+1)/2, spaceNum; for(int i=1;i=middle;i+) /打印星号前的空格 spaceNum=middle-i; for(int j=1;j=spaceNum;j+) System.out.print( ); /打印星号 for(int k=1;k=2*i-1;k+) System.out.print(*); System.out.println(); middle=(n+1)/2; for(int i=

39、1;i=middle;i+) /打印星号前的空格 spaceNum=middle-i; for(int j=1;j=i;j+) System.out.print( ); /打印星号 for(int k=1;k=2*spaceNum-1;k+) System.out.print(*); System.out.println();五、常用的程序设计方法59/第一部分,输入*个数import java.io.*;public class Ex3_20public static void main(String args) throws IOException int n;BufferedReader

40、 br =new BufferedReader(new InputStreamReader(System.in);do System.out.print(input a odd number:); String str=br.readLine(); n=Integer.parseInt(str); while(n%2=0); /条件值为false时结束循环五、常用的程序设计方法60/第二部分,打印上半部分 int middle=(n+1)/2, spaceNum;for(int i=1;i=middle;i+) /打印星号前的空格 spaceNum=middle-i; for(int j=1;

41、j=spaceNum;j+) System.out.print( ); /打印星号 for(int k=1;k=2*i-1;k+) System.out.print(*); System.out.println(); 五、常用的程序设计方法61/第二部分,打印下半部分 for(int i=1;i=n-middle;i+) /打印星号前的空格 spaceNum=i; for(int j=1;j=spaceNum;j+) System.out.print( ); /打印星号 for(int k=1;k=2*(middle-i)-1;k+) System.out.print(*); System.out.println(); 五、常用的程序设计方法/第二部分另一种实现方法 int middle=(n+1)/2,spaceNum, maxLetterNum=n,letterNum; for(int i=1;i=n;i+) /打印星号前的空格spaceNum=Math.abs(middle-i);for(int j=1;j=spaceNum;j+) System.out.print( ); /打印星号letterNum=maxLetterNum-2*spaceNum;

温馨提示

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

最新文档

评论

0/150

提交评论