本章工作任务
实现查询商品价格功能
实现升级购物结算功能
实现升级菜单切换功能
本章技能目标
理解循环的含义
会使用 while 循环结构
会使用 do-while 循环结构
会使用调试解决简单的程序错误
本章简介
前面学习了选择结构,使用它可以解决逻辑判断的问题。但在实际问题中,会遇到需要多次重复执行的操作,仅仅使用选择结构不容易解决。本章将学习循环结构,利用循环结构,可以让程序帮助我们完成繁重的计算任务,同时可以简化程序编码。
预习作业
指导:请按以下步骤预习本章内容:
1. 阅读、学习本章内容。
2. 标注出本章看不懂或存在疑惑的部分。
3. 整理、记录学习中的问题。
4. 熟记本章的英文单词。
请到中心听课前,完成下面的作业。
1. 背诵英文单词
请在预习时找出下列单词在教材中的用法,了解它们的含义和发音,并填写于横线处。
(1) while [waɪl]: conj. 在……期间;在……的过程中;与……同时;adv. 在……时候。
(2) do [duː; də; dʊ]:v. 做,干,办(某事);行动,表现。
(3) index [ˈɪndeks]: n. 指标;指数;索引;指针vi. 做索引vt. 指出;编入索引中。
(4) bug [bʌɡ]:n. 臭虫,小虫;故障;窃听器。
(5) debug [ˌdiːˈbʌɡ]:vt. 调试;除错,改正有毛病部分。
(6) equal [ˈiːkwəl]:adj. 平等的;相等的;胜任的;vt. 等于;比得上。
(7) step [step]:n. 步,脚步;步骤;步伐;梯级;vi. 踏,踩;走;vt. 走,迈步。
(8) error [ˈerər]: n. 误差;错误;过失
2. 预习并回答以下问题
请阅读本章内容,在作业本上完成以下简答题。
(1) while 循环结构的语法和执行顺序是什么?
(2) do-while 循环结构的语法和执行顺序是什么?
(3) 阅读代码,并写出输出结果。
public static void main(String[] args) { int num = 1; while(num <= 5) { System.out.printin (” 第 ”+num+” 遍抄写代码,力口油!"); num++; } }
3. 预习并完成编码题
(1) 编写并完成本章中所有示例代码。
(2) 请使用 Java 语言编写代码,完成以下功能。
① 使用 while 循环结构实现:输出 100 遍 “我要努力学习编程!”。
② 使用 do-while 循环结构实现:输出 100 遍 “我要努力学习编程!”。
技术内容
5.1 循环结构
5.1.1 为什么需要循环结构
提示:张浩的 Java 考试成绩只有 80 分,没有达到自己的目标。为了表明自己勤奋学习的决心,他决定编程写 100 遍“好好学习,天天向上!”
经过努力,张浩终于编写完了程序,如示例 1 所示。
示例1
package cn.jbit.loops1; public class DoWithoutWhile { /* * 不用while打印100遍 */ public static void main(String[] args) { System.out.println("第1遍写:好好学习,天天向上!"); System.out.println("第2遍写:好好学习,天天向上!"); System.out.println("第3遍写:好好学习,天天向上!"); System.out.println("第4遍写:好好学习,天天向上!"); //省略91行语句 System.out.println("第96遍写:好好学习,天天向上!"); System.out.println("第97遍写:好好学习,天天向上!"); System.out.println("第98遍写:好好学习,天天向上!"); System.out.println("第99遍写:好好学习,天天向上!"); System.out.println("第100遍写:好好学习,天天向上!"); } }
程序运行结果如图 5.1 所示。
图 5.1 示例 1 的运行结果
张浩看到这个结果后很高兴,将这段代码拿给老师看。老师看了以后很赞赏张浩努力学习的精神,但给张浩提出了一个问题:如果要写 10000 遍该如何做呢?张浩觉得写 100 遍就花费了很长时间,更何况写 10000 遍呢?张浩去请教了师兄。师兄告诉他可以用循环结构,这样写 100 遍的代码如示例 2 所示。
示例2
package cn.jbit.loops1; public class WhileDemo1 { /* * while打印100遍 */ public static void main(String[] args) { int i = 1; while(i <= 100){ System.out.println("第" +i+ "遍写:好好学习,天天向上!"); i++; // i = i + 1 } } }
通过运行,示例 2 的结果和示例 1 的结果相同。如果要写 10000 遍代码,只需改变一条语句即可,如示例 3 所示。
示例3
package cn.jbit.loops1; public class WhileDemo1 { /* * while打印100遍 */ public static void main(String[] args) { int i = 1; while(i <= 10000){ System.out.println("第" +i+ "遍写:好好学习,天天向上!"); i++; } } }
程序运行结果如图 5.2 所示。
图 5.2 示例 3 的运行结果
与示例 1 相比,示例 2 和示例 3 中处理问题的方式更简单。下面学习循环结构。
5.1.2 什么是循环结构
通过上面的示例,相信大家对循环有了一定的认识。循环就是重复地做,如 5.1.1 节的示例就是重复地写"好好学习,天天向上!"。
其实,在日常生活中有很多循环的例子,如打印 50 份试卷、在 400m 跑道上进行 10000m 赛跑、做 100 道编程题、滚动的车轮等,如图 5.3 所示。
图 5.3 生活中的循环
这些循环结构有哪些共同点呢?
我们可以从循环条件和循环操作两个角度考虑,即明确一句话 “在什么条件成立时不断地做什么事情”。
分析:
打印 50 份试卷:
循环条件——只要打印的试卷份数不足 50 份就继续打印。
循环操作----打印 1 份试卷,打印总份数加 1 。
万米赛跑:
循环条件——跑过的距离不足 10000m 就继续跑。
循环操作——跑 1 圈,跑过的距离增加 400m 。
做 100 道编程题:
循环条件——做编程题不足 100 道就继续做。
循环操作——完成 1 道编程题,完成题目的总数量增加 1 。
滚动车轮:
循环条件——没有到目的地就继续。
循环操作——车轮滚动 1 圈,离目的地更近一点。
由以上分析可以看出,所有的循环结构都有这样的特点:首先,循环不是无休止进行的,满足一定条件的时候循环才会继续,称为"循环条件",循环条件不满足的时候,循环退出;其次,循环结构是反复进行相同的或类似的一系列操作,称为"循环操作",如图 5.4 所示。
循环结构
循环操作
循环条件
图 5.4 循环结构的构成
5.2 while循环结构
5.2.1 什么是while循环结构
我们已经了解了循环结构的构成和特点,而程序中的循环结构是什么样的呢?
观察 5.1.1 节的示例 2, 其中使用了 While 循环结构。 Java 程序中的循环结构有三种实现方式: while 循环结构、 do-while 循环结构和 for 循环结构。本章我们学习前两种。
下面先介绍 while 循环结构,如表 5-1 所示。
表 5-1 while 循环结构
关键字while后小括号中的内容是循环条件。循环条件是一个表达式,它的值为boolean类型,即true或false,如i<=100。{}中的语句统称为循环操作,又称为循环体。
结合表5-1 , while循环结构的执行顺序一般如下。
(1) 声明并初始化循环变量。
(2) 判断循环条件是否满足,如果满足则执行循环操作;否则退出循环。
(3) 执行完循环操作后,再次判断循环条件,决定继续执行循环或退出循环。
结合流程图思考:如果第一次判断循环条件时就不满足,循环操作会不会被执行?
实际上,while循环结构如果第一次判断循环条件就不满足,则会直接跳出循环,循环操作一遍都不会执行。这是while循环结构的一个特点:先判断,后执行。
5.2.2 如何使用 while 循环结构
下面使用while循环结构实现打印50份试卷。根据前面的分析,打印50份试卷的流程图如图5.5所示。
图5.5打印50份试卷的流程图
根据while循环结构的语法,可以得到如示例4所示的代码。
示例4
package cn.jbit.loops1; import java.util.Scanner; public class WhileDemo { /* * 如何使用while循环 */ public static void main(String[] args) { int count = 1; while(count <= 50){ System.out.println("打印第" +count+ "份试卷"); count++; } } }