当前课程知识点:“做中学”Java程序设计 > 第2章使用Java基本语法(2) > 2.12多重循环 > Video
在上一讲当中我们介绍了while do-while for 三种常见循环的语法
在实际使用当中 我们还可以将循环相互嵌套
形成一种多重循环的复杂结构
今天呢我们就来简单的聊一聊多重循环
所谓多重循环 就是循环的一种嵌套形式
也就是说我们可以在外层循环的循环体内
嵌套一层内层循环
根据嵌套的层次 可以分为二重循环 三重循环 等等等等
为了更好的理解多重循环 我们先来回顾一下单重循环
这段代码的作用是循环十次
每次在控制台当中打印一个*号
整个程序执行以后呢 将在控制台上看到连续的十个*号
这是我们熟悉的单重循环结构
现在我们对它进行扩展
在它的外侧增加一层循环
这就形成了二重循环的结构
那么它的运行效果是什么呢
刚才我们分析过
这里的for col=0 col<10
这个循环的作用是输出十个*号
你可以把它的输出等价的替换到那层循环部分
这样一个二重循环就退化为简单的一重形式
现在再来看看它的作用是什么
那么这个二重循环的作用就是打印五行 每行呢打印十个*号
不管是for while 还是do-while 你都可以实现这样的嵌套循环
甚至可以将它们灵活的组合起来使用
需要特别注意的是
当我们嵌套循环当中使用continue和break的时候
它们只对所属的那层循环起作用
我们来举个例子吧
在这段代码当中
我们在内层循环的位置加了个if条件语句
它在i%2==0的时候条件成立
会执行一个break语句
一开始我们的i它的初始值是0
当执行这个内层循环的时候
就会立刻发现这里的i%2==0条件成立
所以它就会执行这里的break
而这里的break位于内层循环的循环体当中
这也就是说 它将跳出内层循环
跳到我们的System.out.println的位置上
从而继续外层的下一次循环
经过i++以后
i的值变成了1
这时候再去执行内层循环
那么这里的if条件就不再成立了
从而会连续的循环打印出十个*号
完成换行后再次更新i
i的值变成2
此时i%2==0条件又会成立
如此循环下去 直到i的值等于5为止
可见它的运行效果就是将第一行 第三行显示为空行
而第二 第四行打印出十个*号
下面我们再来思考一个问题
如果我们把break相关语句移到外层循环的位置
程序的运行会发生什么变化呢
由于i的初始值是0
当它执行到循环体的时候
满足了这里的条件i%2==0
那么将会执行这里的break语句
而这时候 break所属的循环语句块呢是外层循环
它将直接跳出外层循环
结束整个循环语句
因此 你在控制台上将看不到任何的输出信息
这就是大家需要在多重循环当中 特别注意continue和break的用法
下面为了巩固我们今天学过的知识
我们来做一个简单的打印三角形的练习
这里要求大家打印出如图所示的三角形星型图形
要完成这个任务 我们首先来观察下它的规律
注意到这是一个由五行构成的三角形
第一行由一个*号构成 第二行由两个*号构成 依次类推
直到第五行 也就是最后一行 由五个*号构成
你会发现每行*号的个数等于当前的行数
有了这个规律我们就可以这样写
首先我们定义一个常量line 来表示所有的行数
然后定义一个外层循环 表示循环的行数
每行我们用一个内层循环来打印*号
这里的*号至少是一个 最多不能超过当前的行数
也就是外层循环变量line的当前值
最后 打印完一行*号 记得要用println进行换行
运行下我们的程序 一个星型三角形就已经做完了
有了这个经验以后
我们要实现一个倒三角形也是非常的方便
这里的外层循环行数 可以保持不变
我们只需要控制内层的*号就可以了
它的值最多等于line
随着行数的逐渐减少
至少要大于等于当前的行数
好了 一个倒三角形也就写好了
当然 这里的做法有很多种
归根结底 你就需要控制好你的行数
控制好你每行的*号数
今天的内容就讲到这里 你学会了吗
好了我们总结一下今天学到的内容 默认的在循环嵌套的环境下
break和continue遵行邻近原则
也就是说它们跳出循环的是所在的语句块
在使用嵌套循环的时候一定要弄明白每层嵌套循环的控制内容
能够精确的计算出每次循环控制的次数
你需要完成大量的练习来体会这个知识
-1.1Java简介
--01Java简介
-1.2搭建Java开发环境
--Video
-1.3使用记事本编写Java程序
--Video
-1.4使用Eclipse开发Java程序
--Video
-1.5导入/导出Java项目
--Video
-1.6管理组织代码
--Video
-第1章初始Java--测试题
-2.1认识标识符
--Video
-2.2变量和变量类型
--Video
-2.3数据类型和类型转换
--Video
-2.4使用常量
--Video
-2.5使用注释
--Video
-2.6使用运算符进行算术运算
--Video
-第2章使用Java基本语法(1)--测试题
-2.7使用运算符进行逻辑处理
--Video
-2.8使用if进行流程控制
--Video
-2.9使用switch进行流程控制
-2.10使用循环
--Video
-2.11循环的跳出和继续
--Video
-2.12多重循环
--Video
-第2章使用Java基本语法(2)--测试题
-3.1认识类和对象
--Video
-3.2为类添加属性
--Video
-3.3为类添加方法
--Video
-3.4为类添加静态方法
--Video
-3.5递归方法
--递归方法
-3.6构造方法
--Video
-3.7重载方法
--Video
-第3章使用面向对象基础语法--测试题
-4.1使用继承语法
--Video
-4.2使用数组
--Video
-4.3使用数组类操作数组
--Video
-4.4使用抽象类
--Video
-4.5使用接口
--Video
-第4章使用面向对象高级语法--测试题
-5.1异常处理机制
--Video
-5.2捕获异常
--Video
-5.3创建自定义异常
--Video
-第5章捕获并处理异常--测试题
-6.1SWT图形界面
--Video
-6.2使用SWT布局管理-FillLayout
-6.3使用SWT布局管理-RowLayout
-6.4SWT中的事件模型
--Video
-6.5常见事件处理写法
--Video
-第6章使用SWT设计界面--测试题
-7.1微波炉模拟程序的界面制作
--Video
-7.2微波炉模拟程序的代码重构
--Video
-7.3微波炉模拟程序的事件监听
--Video
-7.4微波炉模拟程序的数字键盘
--Video
-7.6微波炉模拟程序CookTimer
--Video
-7.7微波炉模拟程序添加图像
--Video
-7.8微波炉模拟程序添加声音
--Video
-7.9微波炉模拟程序安装包制作
--Video