java流程控制语句.ppt
《java流程控制语句.ppt》由会员分享,可在线阅读,更多相关《java流程控制语句.ppt(70页珍藏版)》请在装配图网上搜索。
第三章JAVA流程控制语句 主讲教师 毛科亮 本章内容 语句概述Java语言的语句分类结构化程序设计的三种基本流程分支语句If语句If else语句Switch语句循环语句while循环语句do while语句for语句转移语句break语句continue语句return语句常用的程序设计方法枚举法 地推法 递归法简单图形的输出格式化的输入与输出从键盘输入数据格式化的输出 语句的概念 java程序的执行遵循一定的流程 流程是程序执行的顺序 流程控制语句是控制程序中各语句执行顺序的语句 是程序中非常关键和基本的部分 流程控制语句可以把单个的语句组合成有意义的 能够完成一定功能的小逻辑块 一 Java语句概述 语句与结构化程序设计在算法语言中 数据类型描述数据的性质 表达式描述对数据的运算 语句描述对数据的操作 程序由一系列语句组成 Java语言虽然是一种面向对象的计算机语言 但在一个局部 例如方法内 块语句内仍然需要面向过程的程序设计和方法 作为面向过程程序设计精华的结构化程序设计思想 仍然是面向对象程序设计方法的基石 一 Java语句概述 结构化程序设计的三种基本流程 尽管现实世界的问题是复杂的 千变万化的 但与之相对应的计算机算法流程 只有三种基本结构 顺序结构 选择结构 循环结构 每种结构都是单入口 单出口 每一部分都会被执行到 没有死循环 A B P A B P 循环体 真 假 假 真 Java语言提供支持结构化程序设计的所有语言 一 Java语句概述 Java语言提供结构化语句实现程序的流程控制 表达式语句顺序结构空语句复合语句条件语句选择语句语句开关语句switchwhile循环语句do whileforbreak转移语句continuereturn 一 Java语句概述 一 Java语句概述 在java语言中 语句以分号 为结束标志 特殊的是 块语由其他语句组成 其本身不用分号结束 内嵌有块语句并以块语句结尾的语句 也不需要用分号结尾 ava语句按性质可分为 说明性语句 操作性语句 Java语句按功能可分为 空语句 标号语句 声明语句 表达式语句 分支语句 循环语句 断言语句 跳转语句 同步语句 异常语句 块语句等 一 Java语句概述 一 Java语句概述 空语句 仅包含一个分号 例如 for inti 1 i 1000 i 标号语句 标号 语句标号的作用域是他所在的块语句 在作用域内不能够有同名的其他标号或局部变量 标号语句的作用在break continue两条跳转语句上体现 断言语句 用于校验类的方法是否被正确调用 语法为 assert表达式1 assert表达式1 表达式2 其中 表达式1必须是boolean表达式 表达式2可以是任何类型 一 Java语句概述 一 Java语句概述 Java程序通过控制语句来执行程序流 完成一定的任务 程序流是由若干个语句组成的 语句可以是单一的一条语句 如c a b 也可以是用大括号 括起来的一个复合语句 语句块可以嵌套 嵌套层数无限制定义类时类体必须采用语句块形式定义方法时方法体必须采用语句块的形式 语句块 一 Java语句概述 一 Java语句概述 表达式语句 表达式是由运算符 操作数和函数等组成的算式 其显著特点是有返回值 即表达式的值 表达式返回值的数据类型取决于表达式的操作数和运算类型 表达式语句可分为以下几类 表达式语句 赋值表达式语句 方法调用语句 对象创建语句 变量声明语句 自增语句 一 Java语句概述 一 Java语句概述 分支语句实现程序流程控制的功能 即根据一定的条件有选择地执行或跳过特定的语句Java分支语句分类 if语句 if else语句 if elseif语句 switch语句 分支语句 二 Java分支语句 一 Java语句概述 格式 if 表达式 语句功能 首先计算表达式 若值为真 则执行语句 否则结束执行if语句 执行if语句的后续语句 思考 inta 2 if a 3 System out println a 3 System out print ok 上面的执行结果是什么 IF语句 二 Java分支语句 一 Java语句概述 classMax publicdoublegetMax doublea doubleb doublemax max a if max b max b returnmax publicclassEx3 1 publicstaticvoidmain String args Maxobj newMax System out println max obj getMax 3 14 3 1415926 判断两个数的最大值 格式 if 表达件 语句1 else 语句2 功能 首先计算表达式 若值为真 则执行语句1 否则执行语句2 IF else语句 二 Java分支语句 一 Java语句概述 importjava util classLeap publicbooleanisLeap intyear if year 4 0 闰年问题 if 条件1 程序代码 elseif 条件2 程序代码 elseif 条件3 程序代码 注意 只要任何一个条件成立 程序就不会对下一个条件进行判断和再执行了 IF elseif语句 二 Java分支语句 publicclassEx3 3 publicstaticvoidmain String args newLetter judgeLetter classLetter publicvoidjudgeLetter charch ch char java lang Math random 128 if ch a 检查用random 方法产生的一个字符 判断是否为英文大写字母 小写字母 数字或是其他符号 并输出相应信息 IF嵌套语句if 条件1 if 条件2 程序代码 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值 表达式的返回值类型必须是这几种类型一int byte char short case子句中的值必须是常量 而且所有case子句中的值应是不同的 default子句是可选的 break语句用来在执行完一个case分支后 使程序跳出switch语句 即终止switch语句的执行 在一些特殊情况下 多个不同的case值要执行一组相同的操作这时可以不用break 不写break时执行自该case开始到下一次找到break语句为止 多分支语句switch 二 Java分支语句 二 Java分支语句 importjava util publicclassEx3 4 publicstaticvoidmain String args newGrade toGrade classGrade publicvoidtoGrade intscore m Scannerreader newScanner System in System out println 输入成绩 score reader nextInt if score100 System out println dataerror else m score 10 switch m case9 case10 System out println ThegradeisA break case8 System out println ThegradeisB break case7 System out println ThegradeisC break case6 System out println ThegradeisD break default System out println ThegradeisE break 输入百分成绩 输出成绩等级 循环语句的作用是反复执行一段代码 直到满足终止循环的条件为止 Java语言中提供的循环语句有 while语句 do while语句 for语句 循环语句 三 Java循环语句 三 Java循环语句 While 条件 循环体 注意 1 此语句是先判断条件 再确定是否执行语句或程序块 2 条件为true时 执行循环体的语句或程序块 反之 不执行循环体 3 在循环体中要有改变条件的语句 否则会成为死循环 while语句 三 Java循环语句 do 循环体 while 条件 注意 1 此语句是先执行一次循环体 再判断条件 2 条件为true时 再次执行循环体的语句或程序块 3 在循环体中要有改变条件的语句 否则会成为死循环 4 do while循环语句即是至少都要执行一次的 do while语句 三 Java循环语句 三 Java循环语句 for 设定初始值 条件限定 修改控制变量 程序代码 不限定的循环 死循环 for 程序代码 多个变量进行定义for inti 0 j 100 i j i j 程序代码 For语句 三 Java循环语句 三 Java循环语句 for inti 0 i 100 i for intj 0 j i j 程序块 注意 在我们的实际开发过程中 for循环语句使用的比较多 重点把握 For循环嵌套 三 Java循环语句 三 Java循环语句 输出1 100内前5个可以被3整除的数 publicclassEx3 5 publicstaticvoidmain Stringargs intnum 0 i 1 while i 100 if i 3 0 System out print i num if num 5 break i 输出101 200内的质数 publicclassEx3 6 publicstaticvoidmain Stringargs for inti 101 i 200 i 2 booleanf true for intj 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语句出现在多层嵌套的语句块中时 可以通过标签指明要终止的是哪一层语句块label1 label2 label3 breaklabel2 break语句 四 Java跳转语句 四 Java跳转语句 break语句示例 publicclassEx3 7 publicstaticvoidmain String args for inti 1 i 10 i if i 5 break System out println i i System out println Done 四 Java跳转语句 四 Java跳转语句 外层跳转 break语句 在switch语中 break语句用来终止switch语句的执行 在Java中 可以为每个代码块加一个标号 一个代码块通常是用大括号 括起来的一段代码 加标号的格式如下 BlockLabel codeBlock break语句的第二种使用情况就是跳出它所指定的块 并从紧跟该块的第一条语句处执行 例如 breakBlockLabel break语句a 标记代码块ab 标记代码块bc 标记代码块cbreakb 此处的语句块不被执行 此处的语句块不被执行 从此处开始执行 四 Java跳转语句 四 Java跳转语句 break语句用于终止某个语句块的执行 用在循环语句体中 可以强行退出循环 例如 publicclassEx3 8 publicstaticvoidmain Stringargs intstop 4 for inti 1 i 10 i 当i等于stop时 退出循环if i stop break System out println i i i 1i 2i 3 continue语句用在循环语句体中 用于终止某次循环过程 跳过循环体中continue语句下面未执行的循环 开始下一次循环过程 例如 publicclassEx3 9 publicstaticvoidmain Stringargs intskip 4 for inti 1 i 5 i 当i等于skip时 跳过当次循环if i skip continue System out println i i i 1i 2i 3i 5 2 5 4 四 Java跳转语句 四 Java跳转语句 continue语句 continue语句用于跳过某个循环语句块的一次执行continue语句出现在多层嵌套的循环语句体中时 可以通过标签指明要跳过的是哪一层循环 四 Java跳转语句 四 Java跳转语句 continue语句实例 publicclassEx3 10 publicstaticvoidmain String args for inti 1 i 10 i if i 5 i 7 continue System out println i i System out println Done 四 Java跳转语句 四 Java跳转语句 外层跳转 continue语句 continue语句用来结束本次循环 跳过循环体中下面尚未执行的语句 接着进行终止条件的判断 以决定是否继续循环 对于for语句在进行终止条件的判断前 还要先执行迭代语句 也可以用continue跳转到括号指明的外层循环中格式为continueouterLable 例如outer for inti 0 i 10 i 外层循环inner for intj 0 j 10 j 内层循环if i j continueouter 四 Java跳转语句 四 Java跳转语句 返回语句return return语句从当前方法中退出 返回到调用该方法的语句处 并从紧跟该语句的下一条语句继续程序的执行 返回语句有两种格式 returnexpression return return语句通常用在一个方法体的最后 否则会产生编译错误 除非用在if else语句中 四 Java跳转语句 1 枚举法 穷举法 就是把所有可能的情况一一测试 筛选出符合条件的各种结果进行输出 五 常用的程序设计方法 38 常用算法 1 枚举法 穷举法 笨人之法 把所有可能的情况一一测试 筛选出符合条件的各种结果进行输出 例一 百元买百鸡 用一百元钱买一百只鸡 已知公鸡5元 只 母鸡3元 只 小鸡1元 3只 分析 这是个不定方程 三元一次方程组问题 三个变量 两个方程 x y z 1005x 3y z 3 100设公鸡为x只 母鸡为y只 小鸡为z只 五 常用的程序设计方法 classEx3 11 publicstaticvoidmain String arg intx 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 hens 25 chickens 75cocks 4 hens 18 chickens 78cocks 8 hens 11 chickens 81cocks 12 hens 4 chickens 84 五 常用的程序设计方法 另一种计算方法 classHundredYuanChicken publicvoidprintChicken intx 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 五 常用的程序设计方法 41 2 递推法 迭代法 基本思想 不断由已知值推出新值 直到求得解为止 迭代初值 迭代公式和迭代终止条件是迭代法的三要素例 斐波纳契数列 前两个数都是1 第三个数是前两个数之和 以后的每个数都是其前两个数之和 各数之间的一种递推关系 即 Fn Fn 1 Fn 2 F1 F2 1本题的三要素是 迭代初值 x 1 y 1迭代公式 z y x终止条件 共计算n 2次 五 常用的程序设计方法 42 publicclassEx3 12 staticintfib intn intfirst 1 intsecond 1 intsum first second inti 2 while i n first second second sum sum first second returnsum publicstaticvoidmain Stringargs System out println f20 fib 20 程序的运行结果如下 javaFibIterativef20 6765 五 常用的程序设计方法 累加型 类型诸如 求其前n项之和的编程题 累加型算法若设i为循环变量 s为前n项累加之和 则程序的基本结构为 s 0 for i 1 i n i s s 五 常用的程序设计方法 44 编程求1 1 2 1 3 1 4 1 5 1 99 1 100 累加型算法程序基本结构为 s 0 for i 1 i n i s s 运行结果 Sum 0 6881719 五 常用的程序设计方法 45 1 classEx3 13 2 staticfloatmySum intn 3 floatk 1f 4 floatsum 0 0f 5 for inti 1 i n i 6 7 sum sum k i 8 k k 9 10 returnsum 11 12 publicstaticvoidmain Stringargs 13 System out println Sum100 mySum 100 14 五 常用的程序设计方法 46 阶乘型 类型诸如 求其前n项之积的编程题 阶乘型算法若设i为循环变量 s为前n项相乘之积 则程序的基本结构为 s 1 for i 1 i n i s s 五 常用的程序设计方法 47 classEx3 14 staticintmyFac intn intfac 1 for inti 1 i n i fac fac i returnfac publicstaticvoidmain Stringargs System out println Fac10 myFac 5 n 运行结果 Fac10 3628800 0 五 常用的程序设计方法 48 编程求 n 1 2 3 n n由键盘输入 在同一个循环中先阶乘 后累加 五 常用的程序设计方法 49 1 classEx3 15 2 staticintmethod intn 3 ints 0 p 1 4 for inti 1 i n i 5 p p i i 6 s s p 7 8 returns 9 10 publicstaticvoidmain Stringargs 11 intr method 5 12 System out println r r 13 14 运行结果 r 153 五 常用的程序设计方法 50 a aa aaa a a importjava io classEx3 16 publicstaticvoidmain Stringargs throwsIOException BufferedReaderbr newBufferedReader newInputStreamReader System in System out print 请输入一个长度n Stringstr br readLine 转换字符串为整型数intn Integer parseInt str 五 常用的程序设计方法 51 System out print 请输入一个整数a str br readLine 输入字符存入字符串inta Integer parseInt str 转换字符串为整型数据inti 1 sn 0 tn 0 while i n tn tn a sn sn tn a a 10 i System out println a aa aaa sn 五 常用的程序设计方法 52 3 递归法基本思想是不断把问题分解成规模较小的同类问题 直到分解形成的问题因规模足够小而能直接求得解为止 1 classFibRecursion 2 staticintfib intn 3 if n 1 n 2 return1 4 returnfib n 1 fib n 2 5 6 publicstaticvoidmain Stringargs 7 System out println f21 fib 21 8 9 一般来说 使用递归的程序代码会更简捷 也更容易理解 但递归代码的执行效率却非常低 所以应尽量避免使用 五 常用的程序设计方法 分析下面程序的运行结果 publicclassEx3 17 publicstaticvoidmain Stringarge System out println method 3 publicstaticintmethod intn if n 1 return1 elsereturnn method n 1 2 8 五 常用的程序设计方法 递归调用指在方法执行过程中出现该方法本身的调用例如 求Fibonacci数列 1 1 2 3 5 8 第40个数的值 数列满足递推公式 F1 1 F2 1Fn Fn 1 Fn 2 n 2 publicclassEx3 18 publicstaticvoidmain Stringarg System out println f 40 publicstaticintf intn if n 1 n 2 return1 else returnf n 1 f n 2 五 常用的程序设计方法 main f5 f4 f3 f2 f1 f2 f3 f2 f1 publicstaticintf intn if n 1 n 2 return1 else returnf n 1 f n 2 五 常用的程序设计方法 56 4 简单图形的输出编程显示以下图形 共N行 N由键盘输入 此类题目分析的要点是 通过分析 找出每行空格 与行号i 列号j及总行数N的关系 其循环结构可用右图表示 分析 设N 5 第1行4个空格 5 11个 2 行号 1第2行3个空格 5 23个 2 行号 1第3行2个空格 5 35个 2 行号 1第4行1个空格 5 47个 2 行号 1第5行0个空格 5 59个 2 行号 1 由此归纳出 第i行的空格数N i个 第i行的 数是2i 1个 五 常用的程序设计方法 57 编程显示以下图形 共N行 N由键盘输入 算法 分成两部分完成 N 9行N1 N 1 2 5N2 N N1 4 五 常用的程序设计方法 58 publicclassEx3 19 publicstaticvoidmain Stringargs intn 9 intmiddle n 1 2 spaceNum for inti 1 i middle i 打印星号前的空格spaceNum middle i for intj 1 j spaceNum j System out print 打印星号for intk 1 k 2 i 1 k System out print System out println middle n 1 2 for inti 1 i middle i 打印星号前的空格spaceNum middle i for intj 1 j i j System out print 打印星号for intk 1 k 2 spaceNum 1 k System out print System out println 五 常用的程序设计方法 59 第一部分 输入 个数importjava io publicclassEx3 20 publicstaticvoidmain Stringargs throwsIOException intn BufferedReaderbr newBufferedReader newInputStreamReader System in do System out print inputaoddnumber Stringstr br readLine n Integer parseInt str while n 2 0 条件值为false时结束循环 五 常用的程序设计方法 60 第二部分 打印上半部分intmiddle n 1 2 spaceNum for inti 1 i middle i 打印星号前的空格spaceNum middle i for intj 1 j spaceNum j System out print 打印星号for intk 1 k 2 i 1 k System out print System out println 五 常用的程序设计方法 61 第二部分 打印下半部分for inti 1 i n middle i 打印星号前的空格spaceNum i for intj 1 j spaceNum j System out print 打印星号for intk 1 k 2 middle i 1 k System out print System out println 五 常用的程序设计方法 第二部分另一种实现方法intmiddle n 1 2 spaceNum maxLetterNum n letterNum for inti 1 i n i 打印星号前的空格spaceNum Math abs middle i for intj 1 j spaceNum j System out print 打印星号letterNum maxLetterNum 2 spaceNum for intj 1 j letterNum j System out print System out println 五 常用的程序设计方法 从命令行输入 输出数据 Scanner是JDK1 5新增的一个类 可以使用该类创建一个对象 如 Scannerreader newScanner System in reader对象可调用下列方法 读取用户在命令行输入的各种数据 nextBoolean nextByte nextShort nextInt nextLong nextFloat nextDouble System out println或System out print可输出串值 表达式的值 可使用并置符号 将变量 表达式值或一个常数值与一个字符串并置一起输出 JDK1 5新增了printf函数类似的数据输出方法 格式为 System out printf 格式控制部分 表达式1 表达式2 格式符号 d输出int型数据 c输出char型数据 f输出float型数据 小数部分最多保留6位 s输出字符串数据 md输出的int型数据占m列 m nf输出fload型数据占m列 小数点保留n位 六 格式化的输入与输出 importjava util Scanner publicclassEx3 21 publicstaticvoidmain String args System out println 请输入 System out println 请输入0结束 Scannerreader newScanner System in doublesum 0 intm 0 doublex reader nextDouble while x 0 m m 1 sum sum 1 x reader nextDouble System out println m 个数的和为 sum System out println m 个数的平均值为 sum m 六 格式化的输入与输出 课后作业 1 求水仙花数水仙花数的定义 运算规则 水仙花数是三位数 它的个 十 百位数字的立方的和等于该数本身 例如 371 27 343 1 课后作业 2 求100以内的质数质数的定义 只能被1或自身整除的数3 输出等腰三角形 4 输出倒等腰三角形 课后作业 5 输出菱形 6 输出乘法表 课后作业 7 编一程序实现以下功能 运行时输出下列结果 图示 abcdefg abcde abc a8 编一程序实现以下功能 求输入的整数各位数字之和 如输入234则输出9 输入 312则输出69 编一程序实现以下功能 将一个整数首尾倒置 若程序输入12345 则输出54321 若程序输入 34567 则输出 76543 做成一个方法传参数 课后作业 10 编一程序实现以下功能 输入的一个小写字母 将字母后移5个位置后输出 如 a 变成 f w 变成 b 11 计算1 2 3 10 其中阶乘的计算用方法实现 ThankYou- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 流程 控制 语句
装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文