Java_程序设计教程-chapter_5_第1页
Java_程序设计教程-chapter_5_第2页
Java_程序设计教程-chapter_5_第3页
Java_程序设计教程-chapter_5_第4页
Java_程序设计教程-chapter_5_第5页
已阅读5页,还剩49页未读, 继续免费阅读

下载本文档

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

文档简介

1、Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-WesleyJava Software Solutions Foundations of Program DesignSixth Editionby Lewis & LoftusChapter 5: 条件和循条件和循环语环语句句Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-2条件和循条件和循环语环语句句 现在我们进一步探讨程序设计语言提供的功能

2、: 做出判断 在一个循环内部重复执行 第5章重点: 布尔语句 条件语句 数值比较 重复执行语句 迭代器Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-3Outline if 语句和条件语句和条件其他条件语句其他条件语句数值比较数值比较While语句语句其他循环语句其他循环语句Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-4控制流控制流 除非特别指定,否则程序中的语句会顺序地执行:一次

3、向下执行一句 一些程序语句可以实现: 决定是否执行某一特定程序语句 反复执行某一程序语句 这些决定的产生基于布尔表达式 (或称条件) 的值为true或false语句的执行顺序称为控制流Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-5条件条件语语句句 条件语句提供了选择下一步执行哪条语句的功能 因而条件语句也称为选择语句 条件语句提供了做出基本决策的能力 Java条件语句主要有: if 语句 if-else 语句 switch 语句Copyright 2009 Pearson Educat

4、ion, Inc. Publishing as Pearson Addison-Wesley5-6If语语句句 if 语句包括下列 语法:if ( condition ) statement;if 为为javajava保留字保留字condition 必须为布尔表达式必须为布尔表达式. . 取取值必须为值必须为truetrue或者或者false.false.如果如果 condition 为为true, true, 则执行则执行statement 语句语句. .如果为如果为false, false, 则跳过则跳过statement语句语句. .Copyright 2009 Pearson Educ

5、ation, Inc. Publishing as Pearson Addison-Wesley5-7If语语句句逻辑逻辑conditionconditionevaluatedevaluatedstatementstatementtruetruefalsefalseCopyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-8布尔表达式布尔表达式 条件通常使用Java的等式运算符或者关系运算符,它们都返回布尔结果:=等于!=不等于大于=大于等于 注意等式运算符 (=)和赋值运算符 (=)的区别Copy

6、right 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-9If语语句句 if语句的例子:if (sum MAX) delta = sum - MAX;System.out.println (The sum is + sum);首先判断条件值首先判断条件值 sum值要么大于值要么大于 MAX值值, 要么不是要么不是如果条件为如果条件为true, 则执行赋值语句则执行赋值语句 否则否则, 赋值语句被跳过赋值语句被跳过.不管怎样不管怎样, println方法都始终执行方法都始终执行通过if 语句实现的语句控制试

7、图表示语句间关系Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-10If语语句句 下列语句做了什么?if (total != stock + warehouse) inventoryError = true;设置标志变量值为设置标志变量值为true如果如果total值不等于值不等于 stock 和和warehouse变量值之和变量值之和算术运算符的优先级比等式运算符和关系运算符要高算术运算符的优先级比等式运算符和关系运算符要高Copyright 2009 Pearson Education

8、, Inc. Publishing as Pearson Addison-Wesley5-11逻辑逻辑运算符运算符布尔表达式能够使用下列逻辑运算符:!逻辑非&逻辑与|逻辑或 它们的操作数为布尔型,并产生布尔型结果 逻辑非是单目运算符 (只有一个操作数) 逻辑与和逻辑或是二元运算符 (包含两个操作数)Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-12短路操作符短路操作符 逻辑与和逻辑或具有“短路性” 如果左边的操作数足以确定整个运算结果,则右边的操作数不再参与运算应该谨慎考虑是否利

9、用编程语言的这种微妙特性应该谨慎考虑是否利用编程语言的这种微妙特性if (count != 0 & total/count MAX) System.out.println (Testing);Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-13Outlineif 语句和条件语句和条件其他条件语句其他条件语句数值比较数值比较While语句语句其他循环语句其他循环语句Copyright 2009 Pearson Education, Inc. Publishing as Pearson

10、 Addison-Wesley5-14if-else语语句句 else 字句可以加入到 if 语句后构成if-else 语句if ( condition ) statement1;else statement2;如果如果condition 为为true, statement1 被执行被执行; 如果如果 condition 为为false, statement2 被执行被执行最终只有一条语句被执行最终只有一条语句被执行Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-15if-else语语句句

11、逻辑逻辑conditionconditionevaluatedevaluatedstatement1statement1truetruefalsefalsestatement2statement2Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-16语语句句块块 几个语句可以通过括号括起来组合为语句块 在Java语法中,任何能够使用单条语句的地方也可以使用语句块if (total MAX) System.out.println (Error!); errorCount+;Copyright

12、2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-17条件运算符条件运算符 Java 条件运算符采用布尔条件决定两条语句中的哪条被执行 条件运算符语法为:condition ? expression1 : expression2如果condition 为true, 返回expression1的值作为整个表达式的值; 如果为false,返回 expression2值Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley

13、5-18条件运算符条件运算符 条件运算符类似于if-else语句,除了一点例外:它是一个返回数值的表达式 例如:larger = (num1 num2) ? num1 : num2); 如果num1 大于 num2, 则 num1 值赋予给larger变量; 否则, num2 值赋予larger 条件运算符是三元运算符因为它需要三个操作数Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-19If语语句的嵌套句的嵌套 一条if语句中嵌入另一条if语句,这种情况称为if语句的嵌套 else 字句

14、必须和它前面最近的没有匹配项的if语句相匹配 if (a3) if (b2) System.out.print(“hello”);else System.out.print(“bob”); 括号可用于指定 if 语句与哪个else 字句匹配Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-20Switch语语句句 switch 语句提供了另一种方法以决定哪条语句被执行 Switch语句先计算一个表达式的值, 然后将该值和几种可能的case子句取值进行匹配 每个case字句包含了一个值和语句列

15、表 控制流转到符合条件值的第一个case语句Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-21Switch语语句句 Switch语句通用语法:switch ( expression ) case value1 : statement-list1 case value2 : statement-list2 case value3 : statement-list3 case . default : switch和和case都为保留字都为保留字如果如果expression匹配匹配value2

16、, ,控制流跳转到此处控制流跳转到此处optionalCopyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-22Switch语语句句通常break语句用于case语句列表的最后 Break语句使得控制流转移到switch 语句结束之后 如果没有使用break 语句,控制流会继续进行下一个case 有时候这可能是恰当的,但大多数情况下我们只希望执行一个case相关联的语句Copyright 2009 Pearson Education, Inc. Publishing as Pearson Add

17、ison-Wesley5-23switch语语句句switch (option) case A: aCount+; break; case B: bCount+; break; case C: cCount+; break; switch语句的例子:Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-24switch语语句句 switch 语句的表达式必须产生一个整数类型 (byte, short, int, long) 或者一个 char 不能为boolean 型或floating 值 (f

18、loat or double)Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-25Outlineif 语句和条件语句和条件其他条件语句其他条件语句数值比较数值比较While语句语句其他循环语句其他循环语句Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-26数数值值比比较较 当采用布尔表达式比较数值时,有必要理解特定数据类型的细微差别 我们接下来分析几个重要情况: 浮点数比较 字符比较C

19、opyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-27浮点数比浮点数比较较 当比较浮点数时(float or double) ,应该尽量少用等号运算符 (=) 只有当两个浮点数的二进制数位都相等时,这两个浮点数才相等 计算结果通常会有细微的差别,这些差别其实并不明显Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-28浮点数比浮点数比较较 判断两个浮点数相等,可以采用如下语句:if (Mat

20、h.abs(f1 - f2) TOLERANCE) System.out.println (Essentially equal);如果两个浮点数很类似,以至于两者差比我们指如果两个浮点数很类似,以至于两者差比我们指定的误差还小,则认为两者相等定的误差还小,则认为两者相等Tolerance值可以设定为任意合适的尺度值可以设定为任意合适的尺度, 例如例如 0.000001Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-29字符比字符比较较 Java字符数据是基于Unicode字符集 Unico

21、de为每个字符指定了特定的数值,该字符集定义了所有字符的顺序 字符也可以使用等式运算符和关系运算符 例如,字符 + 小于字符 J因为在Unicode字符集中, +出现在J的前面 附录C提供了 Unicode的概述Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-30字符比字符比较较 在Unicode编码, 数字字符(0-9)是连续且有序的 同样, 大写字母 (A-Z) 和小写字母 (a-z) 也是连续去有序CharactersUnicode Values0 948 through 57A Z

22、65 through 90a z97 through 122Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-31Outlineif 语句和条件语句和条件其他条件语句其他条件语句数值比较数值比较While语句语句其他循环语句其他循环语句Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-32循循环语环语句句 循环语句允许多次执行同一语句 通常它们称为loops 类似于条件语句,循环语句也由布

23、尔表达式控制 Java 包含三种循环语句: while 循环 do循环 for循环 程序应当根据情况选择合适的循环类型Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-33While语语句句 While语句语法如下 :while ( condition ) statement;如果如果condition 为为true, 则执行则执行statement对对condition再次判断再次判断, 如果还是为如果还是为true,则再次执行则再次执行 statementStatement可以重复执行直

24、到可以重复执行直到 condition 值变为值变为falseCopyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-34While循循环逻辑环逻辑语句语句truetruefalsefalse判断条件判断条件Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-35While循循环环 While语句例子:int count = 1;while (count = 5) System.out.print

25、ln (count); count+;如果如果 while 循环初始时就为循环初始时就为false, 则则statement不不会被执行会被执行因此,因此,while 循环的循环体可能会执行循环的循环体可能会执行0次或多次或多次次Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-36无限循无限循环环 while 循环的循环体的判断条件最终必须变为 false 否则, 则称为无限循环,循环体会永远执行下去,或者直到程序被终止 无限循环是常犯的逻辑错误 必须精心设计程序逻辑以确保程序循环体能正常

26、终止Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-37无限循无限循环环 无限循环的例子:int count = 1;while (count = 25) System.out.println (count); count = count - 1;循环会一直执行下去直至按下循环会一直执行下去直至按下 终止键终止键(Control-C)或或出现下溢错误出现下溢错误Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addi

27、son-Wesley5-38循循环环嵌套嵌套 与 if嵌套语句类似,循环也能被嵌套 也就是循环体中能够包含另一个循环 外层循环每执行一次,内层循环就会执行指定次数的完整循环Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-39循循环环嵌套嵌套 下述代码中字符串 “Here”将被输出多少次?count1 = 1;while (count1 = 10) count2 = 1; while (count2 = 20) System.out.println (Here); count2+; coun

28、t1+;Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-40Outlineif 语句和条件语句和条件其他条件语句其他条件语句数值比较数值比较While语句语句其他循环语句其他循环语句Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-41Do语语句句 Do语句有如下语法:do statement;while ( condition )statement 初始时先被执行一次初始时先被执行一次

29、, 然后再对然后再对condition判断判断Statement被重复执行,直至条件变为被重复执行,直至条件变为falseCopyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-42Do循循环逻辑环逻辑truetrueconditionconditionevaluatedevaluatedstatementstatementfalsefalseCopyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-4

30、3do循循环环 Do循环的例子:Do循环的循环体至少执行一次循环的循环体至少执行一次int count = 0;do count+; System.out.println (count); while (count 5);Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-44for循循环环 For循环语法如下 :for ( initialization ; condition ; increment ) statement;initialization当循环开始时被执行一次当循环开始时被执行

31、一次Statement被执行直至被执行直至Condition变为变为falsefalseIncrement部分在每次迭代结束时执行部分在每次迭代结束时执行Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-45For循循环逻辑环逻辑statementstatementtruetrueconditionconditionevaluatedevaluatedfalsefalseincrementincrementinitializationinitializationCopyright 2009

32、Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-46For循循环环 For循环功能上类似于下列while 循环结构:initialization;while ( condition ) statement; increment;Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley5-47for循循环环 for 循环例子:for(int count=1,float a=2.0f;count = 5;count+, a-=3) System.out.println (count);初始化部分可用于定义变量初始化部分可用于定义变量类似于类似于while循环循环, for 循环的循环的 condition 的判断先于循环体的执行的判断先于循环体的执行因此因此, for循环的循环体可能被执行零次或多次循环的循环体可能被执行零次或多次 For循环也适用于执行预先确定执行次数的循环体循环也适用于执行预先确定执行次数的循环体Copyright 2009 Pearson Education, Inc. Publishing as Pearson Addison

温馨提示

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

评论

0/150

提交评论