Java语句及其控制结构.ppt

上传人:max****ui 文档编号:6364047 上传时间:2020-02-24 格式:PPT 页数:72 大小:428.50KB
返回 下载 相关 举报
Java语句及其控制结构.ppt_第1页
第1页 / 共72页
Java语句及其控制结构.ppt_第2页
第2页 / 共72页
Java语句及其控制结构.ppt_第3页
第3页 / 共72页
点击查看更多>>
资源描述
第3章Java语句及其控制结构 3 1Java程序结构3 2选择语句3 3循环语句3 4跳转语句习题 例3 1以一个程序范例来说明Java程序的构成 importjava applet Applet importjava awt publicclassGetSquareextendsApplet Labellabel1 publicvoidinit label1 newLabel 前 个数的平方 add label1 3 1Java程序结构3 1 1Java程序构成 publicvoidpaint Graphicsg for inti 0 i 30 i intx i 10 y i 10 g drawString String valueOf i 1 i 1 20 30 x 50 25 y 从例3 1可以看到 Java源程序一般包括Java包引入 如果有的话 和类定义两部分 Java程序中 必须含有一个可被外界 通常是java解释器 所直接调用的类 这个类称为该应用程序的主类 一个源程序中可以定义多个类 但只能有一个是主类 JavaApplet程序的主类是继承自Applet的子类 JavaApplication程序的主类是包含main方法的类 整个应用程序就是从main方法开始执行的 类定义由类声明语句和类体组成 类声明语句用来说明类的名称 访问权限及类的属性 类体也由两部分组成 成员变量和成员方法 在例3 1GetSquare类中 lable1是添加的成员变量 init和paint是继承下来的成员方法 成员变量为类中定义的变量 又称属性 域 用来说明类的状态和特性 定义成员变量需要声明成员变量的名称 类型 成员方法为类中的方法 用来实现类的功能和行为 是完成程序任务的关键 JavaApplication程序中一定要有main主方法 而JavaApplet程序一般要有init 初始化方法或paint Graphicsg 画图方法 应该注意到 类体中除了成员变量说明语句外没有其他语句 Java规定所有操作性语句必须放在成员方法中 方法类似于其他程序设计语言中的函数 可以调用 可以有返回值 成员方法可以继承父类的方法 也可以自定义成员方法 根据需要 方法中可以定义局部变量 但更重要的是组织方法中的语句结构 因为Java程序由各种语句结构控制着程序流程和功能的实现 Java语句是Java标识符的集合 由关键字 常量 变量和表达式构成 Java语句分为说明性语句和操作性语句 Java说明性语句用来说明包和类的引入 类的声明 变量的声明 例如 importjava applet Applet 包引入语句 publicclassGetSquareextendsApplet 声明类语句Java操作性语句有表达式语句 复合语句 选择语句和循环语句等 语句以分号 作为结束标志 单独的一个分号被看作一个空语句 空语句不做任何事情 3 1 2Java语句 1 表达式语句在表达式后边加上分号 就是一个表达式语句 经常使用的表达式语句有赋值语句和方法调用语句 表达式语句是最简单的语句 它们被顺序执行 完成相应的操作 例如 intk i 3 j 4 k i j System out println k k 2 复合语句复合语句也称为块 block 语句 是包含在一对大括号 中的任意语句序列 与其他语句用分号作结束符不同 复合语句右括号 后面不需要分号 尽管复合语句含有任意多个语句 但从语法上讲 一个复合语句被视为一个简单语句 例3 2复合语句示例 classBlock publicstaticvoidmain Stringargs intk i 3 j 4 k i j System out println k k floatf f j 4 5F i System out println f f System out println i i 利用选择语句结构可以根据条件控制程序流程 改变程序执行的顺序 3 2选择语句 if语句的语法格式为 if 条件表达式 s1语句 这是最简单的单分支结构 条件表达式的值为true 就执行s1语句 否则就忽略s1语句 s1语句可以是复合语句 3 2 1if语句 if语句通常与else语句配套使用 形成二分支结构 它的语法格式为 if 条件表达式 s1语句 else s2语句 当条件表达式的值为true 就执行s1语句 忽略else和s2语句 条件表达式的值为false 程序忽略s1语句 执行else后面的s2语句 s1和s2都可以是复合语句 3 2 2if else语句 例3 3比较两个数的大小并按升序输出 运行结果如图3 1所示 classC1 publicstaticvoidmain Stringargs doubled1 23 4 doubled2 35 1 if d2 d1 System out println d1 System out println d2 else System out println d2 System out println d1 图3 1 对于复杂的情况 可以嵌套使用if else语句 它的语法格式为 if 条件表达式1 s1语句 elseif 条件表达式2 s2语句 else s3语句 在这里依次计算条件表达式 如果某个条件表达式的值为true 就执行它后面的语句 其余部分被忽略 所有表达式的值都为false 就执行最后一个else后的s3语句 s1 s2和s3都可以是复合语句 3 2 3if else复合结构 例3 4下面是一个用if else语句构造多分支程序的例子 判断某一年是否为闰年 闰年的条件是符合下面二者之一 能被4整除 但不能被100整除 能被400整除 输出结果如图3 2所示 publicclassLeapYear publicstaticvoidmain Stringargs booleanleap intyear 1989 if year 4 0 year 2000 方法2 if year 4 0 leap false elseif year 100 0 leap true elseif year 400 0 leap false else leap true if leap true System out println year 年是闰年 else System out println year 年不是闰年 year 2050 方法3 if year 4 0 if year 100 0 if year 400 0 leap true else leap false else leap false else leap false if leap true System out println year 年是闰年 else System out println year 年不是闰年 图3 2方法1用一个逻辑表达式包含了所有的闰年条件 方法2使用了if else语句的复合形式 方法3则通过大括号 对if else进行匹配来实现闰年的判断 可以根据程序对比这3种方法 体会其中的联系和区别 在不同的场合选用适当的方法 虽然嵌套的条件语句可实现多个分支处理 但嵌套太多时容易出错和混乱 这时可以使用开关语句switch处理 实际上开关语句switch也是一种if else结构 不过它使你在编程时很容易写出判断条件 特别是有很多条件选项的时候 开关语句switch的语法格式为 switch 表达式 case常量1 语句1 break 3 2 4switch开关语句 case常量2 语句2 break default 语句n 其中switch case default是关键字 default子句可以省略 开关语句先计算表达式 然后将表达式值与各个常量比较 如果表达式值与某个常量相等 就执行该常量后面的语句 如果都不相等 就执行default下面的语句 如果无default子句 就什么都不执行 直接跳出开关语句 使用开关语句时 注意以下几点 case后面的常量必须是整数或字符型 而且不能有相同的值 通常在每一个case中都应使用break语句提供一个出口 使流程跳出开关语句 否则 在第一个满足条件case后面的所有语句都会被执行 这种情况叫做落空 例3 5有break语句的switch结构示例 本程序当温度变量c小于10 时 显示 有点冷 c小于25 时 显示 合适 c大于25 且小于35 时 显示 有点热 c大于35 时 显示 太热了 输出结果为c等于28 时的情况如图3 3所示 图3 3 publicclassW1 publicstaticvoidmain Stringargs intc 28 switch c 10 1 c 25 2 c 35 3 4 case1 System out println c 有点冷 break case2 System out println c 合适 break case3 System out println c 有点热 break default System out println c 太热了 例3 6无break语句的switch结构示例 输出结果如图3 4所示 图3 4 publicclassW2 publicstaticvoidmain Stringargs intc 28 switch c 10 1 c 25 2 c 35 3 4 case1 System out println c 有点冷 case2 System out println c 合适 case3 System out println c 有点热 default System out println c 太热了 循环可使程序根据一定的条件重复执行某一部分程序代码 直到满足终止循环条件为止 Java中提供的循环语句有 确定次数循环 for 条件循环 while 先执行后判定循环 do 3 3循环语句 如果希望程序的一部分内容按固定的次数重复执行 通常可以使用for循环 for循环采用一个计数器控制循环次数 每循环一次计数器就计数 直到完成给定的循环次数为止 3 3 1for循环语句 例3 7对一维数组中的每个元素赋值 然后按逆序输出 结果如图3 5所示 publicclassA2 publicstaticvoidmain Stringargs inti inta newint 5 for i 0 i 0 i System out println a i a i 图3 5 例3 8按5 的增量打印出一个从摄氏度到华氏度的转换表 输出结果如图3 6所示 classCtoF publicstaticvoidmain Stringargs intfahr cels System out println 摄氏度华氏度 for cels 0 cels 40 cels 5 fahr cels 9 5 32 System out println cels fahr 图3 6 for循环的语法格式为 for 表达式1 表达式2 表达式3 循环体其中表达式1可以给出计数器的初值 是一个赋值语句 表达式2指出循环结束条件 是一个逻辑表达式 表达式3指出计数器每次的增量 是一个赋值语句 注意 计数器可在for语句之前定义 也可在循环括号中定义 计数器增量为1时常写成增量运算的形式 以加快运算速度 根据需要 增量可以大于或小于1 增量计算也可以放在循环体中进行 即把表达式3移到循环体内的适当位置 原位置为空 使用循环语句时常常会遇到死循环的情况 也就是无限制地循环下去 所以在使用for循环时 要注意初值 终值和增量的搭配 终值大于初值时 增量应为正值 终值小于初值时 增量应为负值 编程时必须密切关注计数器的改变 这是实现正常循环避免陷入死循环的关键 while循环不像for循环那么复杂 while循环只需要一个条件判断语句 便可以进行循环操作 3 3 2while循环语句 例3 9下面这个程序可接受从键盘输入的数字1 2 3 并显示得到的奖品 如果输入其他数字则显示字符 没有奖品给你 其中使用了开关语句和while循环语句 输出结果如图3 7所示 importjava io classGetBonus publicstaticvoidmain Stringargs throwsIOException charch System out println 按1 2 3数字键可得大奖 System out println 按空格键后回车可退出循环操作 while ch char System in read System in skip 2 跳过回车键 switch ch case 1 System out println 你得到一辆车 break case 2 System out println 你得到一台彩电 break case 3 System out println 你得到一台冰箱 break default System out println 没有奖品给你 图3 7 while循环的语法格式为 while 条件表达式 循环体其中while是关键字 每次循环之前都要计算条件表达式 其值为true时 就执行一次循环体中的语句 然后再计算条件表达式 决定是否再次执行循环体中的语句 如果条件表达式的值为false时 就跳出循环体 执行循环体下面的语句 注意 while循环中的条件表达式是逻辑表达式 所以循环体中一定要有改变条件表达式值的语句 使条件表达式的值有机会变为false 否则会陷入死循环 do while循环与while循环相反 是先执行循环体中的语句 再计算while后面的条件表达式 若条件表达式值为false则跳出循环 否则继续下一轮循环 有些情况下 不管条件表达式的值是为true还是false 都希望把指定的语句至少执行一次 那么就应使用do while循环 3 3 3do while循环语句 例3 10求1 2 100之和 输出结果如图3 8所示 classSum publicstaticvoidmain Stringargs intn 1 intsum 0 do sum n while n 100 System out println 1 2 100 sum 图3 8 归纳do while循环的语法格式为 do 循环体 while 条件表达式 其中do while是关键字 程序首先执行do下面的循环体 然后计算while后面条件表达式的值 如果其值为true 则重复执行循环体 否则 就结束循环 与while循环相同 do循环在循环体中也一定要有改变条件表达式值为false的语句 否则会陷入死循环 do while循环控制并不是很常用 但有时却非常重要 使用时特别注意不要忘记了while语句结尾处的分号 例3 11分别用while do和for循环语句实现累计求和 输出结果如图3 9所示 publicclassSum1 publicstaticvoidmain Stringargs intn 10 sum 0 while n 0 sum 0 for inti 1 i n i sum i System out println 前 n 个数的总和为 sum n 3 3 4循环语句的嵌套 图3 9 一个循环一般应包括4部分内容 1 初始化部分 用来设置循环的一些初始条件 计数器清零等 2 循环体部分 这是反复被执行的一段代码 可以是单语句 也可以是复合语句 3 迭代部分 这是在当前循环结束 下一次循环开始时执行的语句 常用来使计数器加1或减1 4 终止部分 通常是一个布尔表达式 每一次循环要对该表达式求值 以验证是否满足循环终止条件 3 3 5循环语句小结 跳转语句可以无条件改变程序的执行顺序 Java支持3种跳转语句 break continue和return 3 4跳转语句 break语句提供了一种方便的跳出循环的方法 使用break语句可以立即终止循环 跳出循环体 即使循环没有结束也如此 3 4 1break语句 例3 12break语句的使用示例 输出结果如图3 10所示 classB publicstaticvoidmain Stringargs booleantest true inti 0 while test i i 2 System out println i i if i 10 break System out println i为 i 时循环结束 图3 10 标号是标记程序位置的标识符 break语句只能跳转到循环语句下面的第一条语句上 而带标号的break语句可直接跳转到标号处 正常的break只退出一重循环 如果要退出多重循环 可以使用带标号的break语句 它的语法格式为 标识符 break标识符 3 4 2带标号的break语句 例3 13带标号的break语句的使用示例 运行该程序 正常情况下可从键盘接受16个输入字符 但当输入b按回车时 breaklab1语句就会结束二重循环 输出结果如图3 11所示 classB1 publicstaticvoidmain Stringargs throwsjava io IOException charch lab1 此处为标号标识符 for inti 0 i 4 i for intj 0 j 4 j ch char System in read System in skip 2 if ch b breaklab1 跳到标号标识符处 if ch c System out println 继续 System out println 结束两重循环 图3 11 continue语句只能用在循环结构中 它跳过循环体中尚未执行的语句 重新开始下一轮循环 从循环体第一个语句开始执行 3 4 3continue语句 例3 14下面的程序可以输出1 9中除6以外所有偶数的平方值 输出结果如图3 12所示 classC2 publicstaticvoidmain Stringargs for inti 2 i 9 i 2 if i 6 continue System out println i 的平方 i i 图3 12 Java也支持带标号的continue语句 它通常用在嵌套循环的内循环中 可以用标号标出想跳到哪一条语句继续重复执行程序 其语法格式为 标识符 continue标识符 3 4 4带标号的continue语句 例3 15带标号的continue语句的使用示例 输出结果如图3 13所示 classC3 publicstaticvoidmain Stringargs lab1 for inti 1 i3 System out println Continue continuelab1 System out println i i j j 图3 13 例3 16求100 200间的所有素数 该例通过一个嵌套的for循环来实现 输出结果如图3 14所示 publicclassFind publicstaticvoidmain Stringargs System out println 100 200间的所有素数 intn 0 outer for inti 101 i 200 i 2 intk 15 for intj 2 j k j if i j 0 continueouter System out print i n if n 10 continue System out println n 0 System out println 图3 14 return语句用于方法的返回上 当程序执行到return语句时 终止当前方法的执行 返回到调用这个方法的语句 return语句通常位于一个方法体的最后一行 有带参数和不带参数两种形式 带参数形式的return语句退出该方法并返回一个值 当方法用void声明时 说明不需要返回值 即返回类型为空 应使用不带参数return语句 不带参数的return语句也可以省略 当程序执行到这个方法的最后一条语句时 遇到方法的结束标志 就自动返回到调用这个方法的程序中 3 4 5return语句 带参数的return语句格式为 return表达式 当程序执行到这个语句时 首先计算 表达式 的值 然后将表达式的值返回到调用该方法的语句 返回值的数据类型必须与方法声明中的返回值类型一致 可以使用强制类型转换来使类型一致 例3 17带参数的return语句的使用示例 输出结果如图3 15所示 classCircleArea finalstaticdoublePI 3 14159 publicstaticvoidmain Stringargs doubler1 8 0 r2 5 0 System out println 半径为 r1 的圆面积 area r1 System out println 半径为 r2 的圆面积 area r2 staticdoublearea doubler return PI r r 图3 15 3 1分析下面的源程序的结构和运行结果 classCircleArea finalstaticdoublePI 3 14159 publicstaticvoidmain Stringargs doubler1 8 0 r2 5 0 System out println 半径为 r1 的圆面积 area r1 System out println 半径为 r2 的圆面积 area r2 staticdoublearea doubler return PI r r 习题 3 2根据下面的代码 if x 0 System out println 第一 elseif x 3 System out println 第二 else System out println 第三 判断x的取值在什么范围内时将打印字符串 第二 A x 0B x 3C x 33 3编写程序 根据考试成绩的等级打印出百分制分数段 设 A为90分以上 B为80分以上 C为70分以上 D为60分以上 E为59分以下 要求在程序中使用开关语句 3 4编写程序 从10个数中找出最大值 3 5编写程序 计算n的阶乘 n 设n 10 3 6编写程序 计算数学常数e的值 e 1 1 1 1 2 1 3 3 7编写程序 输出以下数据 N10N100N1000N 1101001000 2202002000 3303003000 4404004000 55050050003 8编写程序 输出乘法口诀 3 9编写程序 输出1 100间的所有奇数 3 10以下程序的输出结果是什么 publicclassTest1 publicstaticvoidmain Stringargs inty x 1 total 0 while x 10 y x x System out println y total y x System out println totalis total 3 11以下程序的输出结果是什么 publicclassTest2 publicstaticvoidmain Stringargs intcount 1 while count 10 System out println count 2 1 count 3 12完成下面的程序 利用break语句和带标号的break语句分别退出一重循环和二重循环 for i 0 i 10 i intj i 10 while j 100 if j 10 break j j 5
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


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

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


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