chp3

Similar documents
<4D F736F F F696E74202D BDE1B9B9BBAFB3CCD0F2C9E8BCC D20D1ADBBB7>

chap07.key

CC213

编译原理与技术

数学软件 Matlab 编程基础 ( 脚本 ) 1

untitled

untitled

PowerPoint Presentation

untitled

<4D F736F F F696E74202D BDE1B9B9BBAFB3CCD0F2C9E8BCC D20D1A1D4F1>

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

Microsoft Word - 01.DOC

Microsoft Word - Vcj05.doc

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc


Python 开发向导.1 Python 条件判断 条件语句是指根据条件表达式的不同计算结果, 使程序流转到不同的代码块 Python 中的条件语句是 if 语句和 if-else 语句.1.1 if 条件语句 if 语句用于判断某个条件是否成立, 如果成立, 则执行语句内的程序, 否则跳过 if

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

Java

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

(京)新登字063号

林子雨《C语言程序设计》讲义PPT

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

OOP with Java 通知 : Project 2 提交时间 : 3 月 15 日晚 9 点

OOP with Java 通知 : Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢

PowerPoint 演示文稿

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

JavaIO.PDF

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

林子雨《C语言程序设计》讲义PPT

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

新版 明解C++入門編

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

chp6.ppt

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

<4D F736F F D D382043D3EFD1D4B3CCD0F2C9E8BCC6D5FDCEC42E646F63>

3.1 Java 的数据类型 Java 支持以下四种不同的数据类型 : 基本数据类型 数组类型 类类型 接口类型 标识符 标识符可由编程者自由指定, 但需要遵循一定的编程约定 : 标识符可由字母 ( 包括 A-Z a-z 汉字 日文片假名 平假名 朝文 ) 数字和两个特殊字符下划线 (_

IntelBook_cn.doc

华清远见第三次大型嵌入式公益培训活动—嵌入式Linux普及行动

试卷代号 :1253 座位号 E 口 国家开放大学 ( 中央广播电视大学 )2014 年秋季学期 " 开放本科 " 期末考试 C 语言程序设计 A 试题 2015 年 1 月 E 四! 五 总分! 一 单选题 ( 每小题 2 分, 共 20 分 ) 1. 由 C 语言源程序文件编译而成的目标文件的默

JAVA 单元 3.1 颁奖典礼 ( 一 ) 单元教学进度设计 教学环节 教学内容 反馈 反馈课前作业完成情况 教师活动反馈加分 学生活动 时间 面向对象程序设计 1. 下面不属于 java 条件分支语句结构的是 A.if 结构 B.if-else 结构 C.if-else if 结构 提问 抢答

第3章.doc

全国计算机技术与软件专业技术资格(水平)考试

FY.DOC

javaexample-02.pdf

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

《大话设计模式》第一章

Chapter 9: Objects and Classes

Microsoft Word - ch04三校.doc

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

Microsoft Word C语言程序设计-理论与实践正文.doc

软件工程文档编制

填 写 要 求 1. 以 word 文 档 格 式 如 实 填 写 各 项 2. 表 格 文 本 中 外 文 名 词 第 一 次 出 现 时, 要 写 清 全 称 和 缩 写, 再 次 出 现 时 可 以 使 用 缩 写 3. 本 表 栏 目 未 涵 盖 的 内 容, 需 要 说 明 的, 请 在

Microsoft Word - PHP7Ch01.docx

電機工程系認可證照清單 /7/1

lect12_Shell_Prog.ppt

新・明解C言語入門編『索引』

_汪_文前新ok[3.1].doc

EJB-Programming-4-cn.doc

投稿類別:電子工程類

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题

第 卷 第 期秦振华 牟永敏 面向 程序的环形复杂度自动化计算方法 其入度为 和一个唯一的出口节点 其出度为 控制流图中的节点 代表程序的语句或表达式 有向边 表示语句间的执行关系 令 表示控制流图中的边 称 是 的前驱 是 的后继 控制流图中的节点可分为 种类型 一种是块结构 即把程序划分为块 块

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

// HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport public HTuple

<4D F736F F D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

使用MapReduce读取XML文件

1.5招募说明书(草案)

附录J:Eclipse教程

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

Microsoft Word - 新1-12.doc

Microsoft PowerPoint - chap02.ppt

Hive:用Java代码通过JDBC连接Hiveserver

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

1-5,6

untitled

计算机文化

Microsoft Word - 第5章.doc

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1

Microsoft PowerPoint - CPP-Ch04.ppt [兼容模式]

跟我学mysql存储过程.doc

勞動條件檢查執行重點(雲林)_ [相容模式]

醋 水 法 在 水 盆 內 放 入 約 七 分 滿 的 水 與 1/2 到 1 小 杯 的 醋 量, 將 髒 襪 子 浸 泡 一 晚, 隔 天 再 丟 入 洗 衣 機, 就 能 洗 得 相 當 乾 淨 醋 有 殺 菌 除 臭 和 漂 白 功 效, 使 用 過 的 醋 水, 還 可 清 理 地 板,

穨 PDF

Microsoft Word - 完全手冊-課程.doc

第一冊 第四章 分裂與再統一 班級 座號 姓吊

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

无类继承.key

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

3) 在编写 Java 代码时, 为了便于阅读, 通常会使用一种良好的格式进行排版, 但这并不是必需的, 我们也可以在两个单词或符号之间插入空格 制表符 换行符等任意的空白字符, 例如下面这段代码的编排方式也是可以的 public class HelloWorld {public static vo

C/C++语言 - 分支结构

第 3 章选择结构 q q q Python 中表示条件的方法 if 语句 选择结构程序设计方法

JAVA 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:/

Microsoft PowerPoint - 05-Status-Codes-Chinese.ppt


Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式]

Microsoft PowerPoint - JavaSE_all.ppt

2 Java 程序设计 2.JDK1.0 发布 1995 年,Sun 推出的 Java 只是一种语言, 而要想开发复杂的应用程序, 必须要有一个强大的开发库支持才行 Sun 在 1996 年 1 月 23 日发布了 JDK1.0 这个版本包括了两部分: 运行环境 ( 即 JRE) 和开发环境 ( 即

Transcription:

Java 软件设计基础 3. 流程控制

3.1 语句控制结构 语句类型 变量声明语句 用来声明变量, 格式为 : 表达式语句 在一个表达式的最后加上一个分号构成的语句, 分号是语句不可缺少的部分, 格式为 : 变量 = 表达式 ; 复合语句 [ 修饰符 ] 类型名变量名 1[, 变量名 2][, ]; [ 修饰符 ] 类型名变量名 1[= 初值 1][, 变量名 2][= 初值 2][, ]; 将相关语句组合在一起就构成复合语句, 复合语句用 { } 括起来

空语句 空语句是什么都不做的语句, 形式为 : 方法调用语句 方法是一系列相关的程序语句的集合, 能实现一定的功能 可以直接调用已定义好的方法来简化程序的编写 格式为 : package 和 import 语句 泛指包含 package( 包 ) 和 import 的语句, 与类 对象有关 控制语句 (control statement) 通常源文件中的语句按照它们出现的顺序从头到尾执行, 但是控制语句通过使用决策 循环和分支来改变执行流程, 使程序按照条件执行特定的代码块 控制语句分为以下几类 : ; 定位标识. 方法名 ( 参数列表 );

顺序结构 : 在程序执行时, 根据程序中语句的书写顺序依次执行的命令序列 语句 1 语句 2 分支结构 : 又成为选择结构, 是在程序执行时, 根据不同的条件, 选择执行不同的程序语句, 用来解决有选择 有转移等诸多问题, 完成应用程序中的智能判断功能 T 条件? F 语句 1 语句 2

循环结构 : 使某些语句或程序段按条件重复执行若干次, 直至该特定条件不满足为止 循环有以下特点 : a. 只有一个入口和出口 ; b. 结构内的每部分都有机会被执行 ; c. 结构内没有 死循环, 即无终止循环或无限循环 语句 T 条件? F

3.2 分支结构 if 条件语句 if-then 语句 是所有控制语句中最基础的语句, 只有特定检测结果为 true 时, 它才通知程序执行特定的代码段 if-then-else 语句 说明 当 if 子句的计算结果为 false 时, 该语句提供第二个执行路径 条件表达式是任意一个返回布尔型数据的表达式 ; 简单语句可以省略前面的花括号 决定什么时候省略括号是个人的习惯, 但会导致代码更加脆弱 如果以后在 then 语句后面加入第二个语句, 常见的错误是忘记加上必须的括号 编辑器不能识别这样的错误, 将会得到错误的结果 以上两种条件语句的结构和格式如下 :

true 1 false if-then if ( 条件表达式 ) { 语句块 ; } 首先计算布尔表达式, 若为真, 则执行语句 1, 否则就直接转入 if 语句的后续语句 if false true 1 2 首先计算布尔表达式, 若为真, 则执行语句 1, 否则执行语句 2, 然后转入 if 语句的后续语句

上述语句不能产生正确的结果 该错误很难发现, 因为这并非编译错误或者是运行时错误 这属于逻辑错误 复合条件 若 if 语句的布尔表达式由一个简单判断给出, 称为简单条件 ; 若由多个简单条件经过逻辑运算而得到, 称为复合条件

嵌套条件语句 Java 中没有提供象 elseif 这样的关键字来进行多条件分支 三种选择或以上的分支就需要利用 if 语句的嵌套来实现 程序从上往下依次判断布尔表达式的条件, 一旦某个条件满足, 就执行相关语句, 然后就不再判断其余的条件, 直接转到 if 语句的后续语句去执行 else 总是与离它最近的 if 语句配对

优秀的书写方式 : if(score>=90) grade= A ; else if(score>=80) grade= B ; else if(score>=70) grade= C ; else if(score>=60) grade= D ; else grade= E ;

switch 多分支语句 允许使用任意数量的可能执行路径, 当分支过多时, 比嵌套条件语句更具有直观性 便捷性 格式如下 : switch 语句 switch( 表达式 ) { case 常量 1: [ 语句块 1; break;] case 常量 2: [ 语句块 2; break;] case 常量 n: [ 语句块 n; break;] [default: 语句块 n+1;break;] }

说明 显然, 通过 if-else 语句的嵌套也能实现 switch 语句的功能, 但通常使用 switch 语句更简练, 而且可读性强, 程序的执行效率也高 ; 表达式的返回类型必须是 byte,short,char 和 int 四种类型, 或者是以后将讨论的枚举类型 (enumerated type), 还可以是 包装 特定原始类型的几个特殊类 :Character,Byte,Short 和 Integer; case 子句中的值必须是常量, 且值应该不相同 ; case 的分支中有多个执行语句时不必用 { } 括起 ; default 子句是可选的, 它处理没有被任何 case 语句显式处理的值 若表达式中的值与所有 case 都不相配, 且没有 default 子句, 则跳出 switch 语句 ; break 语句的作用是执行完一个 case 分支后使程序跳出 switch 语句, 它是可选的, 如果没有这条语句, 流程控制将一个接一个的执行后续的 case 操作, 这样分支语句将变得效率极低且容易误操作

在一些特殊情况下, 多个不同的 case 值要执行一组相同的操作, 可以写成如下形式 : 执行过程 case 语句 case 常量 n: case 常量 n+1: 语句块 ; [break;] 计算表达式的值, 同 case 分支比较, 如果相同则执行相应的语句块, 否则继续向下比较, 直至找到相同的 case 值或者到达 default 分支 ; 在 default 分支不存在的情况下, 则跳出整个 switch 语句 ; Switch 语句的每一个 case 判断, 都只负责指明流程分支的入口点, 而不负责分支的出口点, 分支的出口点需要编程人员用相应的跳转语句来标明

3.3 循环语句 while 语句 是 Java 最基本的循环语句, 格式如下 : 其中,while 是关键字, 布尔表达式是循环条件, 语句为循环体 执行过程如下 : 首先判断布尔表达式, 若为真, 则执行循环体, 然后再判断条件, 直到布尔表达式的值为假, 停止执行语句

注意 : 该语句是先判断后执行, 若一开始条件就不成立, 则不执行循环体 ; 在循环体内部一定要有改变条件的语句, 否则是死循环 do-while 语句 格式 : do-while 语句是 先执行后判断 型, 先执行一次循环体中的语句, 然后测试布尔表达式的值, 若为 true, 则继续执行循环, 否则执行 do-while 语句的后续语句

例程

for 语句 是三种循环语句中功能较强 形式灵活 使用较频繁的循环语句结构, 尤其适合于循环次数清晰的场合

执行过程 : 1 按表达式 1 将初值赋给循环控制变量 ; 2 按布尔表达式判断循环是否成立, 即判断控制变量的值是否满足布尔表达式的条件, 若条件不成立, 则转步骤 5; 若条件成立, 则执行循环 ; 3 按表达式 3 修改控制变量 ; 4 返回步骤 2; 5 结束循环, 执行 for 语句的后续语句 for 语句中循环控制变量必须是有序类型 循环控制变量初值和终值通常是与控制变量类型相一致的常量, 也可以是表达式 对控制变量的初始化只执行一次, 而循环次数由初值和终值决定 其他形式 : 当 表达式 1 表达式 2 表达式 3 都为空的时候, 相当于一个无限循环, 如 :

有时,for 语句在 表达式 1 和 表达式 3 的位置上需要包含多个语句, 由于不能在 for 语句的 ( ) 中使用 { } 来定义复合语句, 因此提供了用逗号分隔的语句系列 如 : 在 for 语句的圆括号的后面加个分号, 则相当于 for 语句的循环体为空语句 例如 :

for 例程 public class ForDemo { public static void main(string[] args) { for(int i=1; i<11; i++) { System.out.println("Count is: " + i); } } } 注意 : 初始化表达式中声明变量的代码 该变量的作用域从其声明开始直到 for 循环控制块的结束 如果在循环之外不需要用到该变量, 那么最好在初始化表达式中声明, 这样就限制了它们的生存周期并且减少了错误的可能

增强的 for 语句 用于在集合和数组之中进行迭代, 可以使循环更加紧凑和容易阅读 注意 : 在这个程序中, 变量 item 保存从数字数组获得的当前值 只要情况允许, 尽量使用 for 循环的增强形式

循环嵌套 一个循环体内又包含另一个完整的循环结构, 称为循环的嵌套 内嵌的循环中还可以嵌套循环, 这就是多重循环 while do-while for 之间都可以互相嵌套使用

3.4 跳转语句 跳转语句用来实现程序执行过程中流程的转移 goto 语句使程序结构混乱, 可读性差 ; Java 语言取消了 goto 语句, 通过 break 语句 continue 语句和 return 语句实现流程的转移 break 语句 使程序的流程从一个封闭语句块 ( 如 switch) 中跳出来, 也可以用于退出一个循环 ( 如 do for while), 此外, 还可以跳到相应的标记位 分类 : 不带标号的 break 语句 从它所在的 switch 分支或最内层循环中跳出来, 执行分支或循环体后面的语句 不能用于循环语句和 switch 语句之外的其他任何语句中

带标号的 break 语句 break 语句的语法格式如下 : 设置标记的语句格式 : break 标号 ; 标号 : 语句 标号 是程序中设置好的标记名, 程序跳到标号所在的语句或者语句块的下一句开始执行 break 语句必须在加标记的代码块的内部才可以跳到标记位 break 终止带加标记的语句, 不是把控制流转移到标记位置, 而是转移到紧跟在标记的语句 ( 块 ) 后面的语句 可以把标号设置在任意的语句或语句块之前

带标号 break 例程 public class BreakWithLabelDemo { public static void main(string[] args) { int[][] arrayofints = {{32,87,3,589},{12,1076,2000,8},{622,127,77,955}}; int searchfor = 12; int i; int j = 0; boolean foundit = false; search: for (i = 0; i < arrayofints.length; i++) { for (j = 0; j < arrayofints[i].length; j++) { if (arrayofints[i][j] == searchfor) { foundit = true; break search; } } } if (foundit) { System.out.println("Found " + searchfor + " at " + i + ", " + j); } else { System.out.println(searchfor + " not in the array"); } } }

continue 语句 continue 语句只能在循环语句中使用 它和 break 语句的区别是 :continue 语句只终止本次循环, 而不是终止整个循环 ; 而 break 语句则是结束整个循环语句的执行 continue 语句同样有两种格式 : 不带标号 终止本次循环, 即跳过循环体中 continue 语句后面的语句, 回到循环体的条件测试部分继续执行 注意 : 只能跳过本次循环的剩余语句 带标号的情况 continue 标号 ; 标号 : 语句 跳过标号指出的语句块中的所有余下语句部分, 回到标号所指语句块的条件测试部分继续执行 标号应该定义在程序中外层循环语句的前面, 用来标志这个循环结构 带标号的 continue 语句使程序的流程直接转入标号标明的循环层次

continue 例程 public class ContinueDemo { public static void main(string[] args) { String searchme = "peter piper picked a peck of pickled peppers"; int max = searchme.length(); int numps = 0; for (int i = 0; i < max; i++) { if (searchme.charat(i)!= 'p') continue; numps++; } System.out.println("Found " + numps + " p's in the string."); } }

return 语句 用来从当前方法中退出, 可使正在执行的分支程序返回到调用它的方法的相应语句处, 并从紧跟该语句的下一条语句继续执行, 格式如下 : return [ 表达式 ]; 说明 : 表达式的值就是被调用方法的返回值, 如果方法没有返回值, 则 return 语句中的表达式可以省略 ; 如果方法中没有出现 return 语句, 则执行完方法中的最后一条语句后自动返回调用它的方法