当前课程知识点:“做中学”Java程序设计 > 第2章使用Java基本语法(2) > 2.11循环的跳出和继续 > Video
在循环的过程当中
有时需要在特定的条件发生的时候
跳出循环
或者继续下一次的循环
这时候呢就需要用到我们今天介绍的break和continue的关键字了
下面我们先来看看break
我们在学习switch语句的时候
已经接触过了这个关键字
在执行完case语句以后
如果不需要继续地执行
我们可以在case语句的最后
加上了一个break语句
它的作用呢是跳出整个switch语句
将程序的控制流呢
跳转到switch之后的下一条语句
break的第二个应用场合
就是放在循环语句当中
通常break语句呢
可以放置在循环体中
在满足特定条件的时候执行break语句
它的作用啊就是强制跳出整个循环
将程序的控制流呢跳转到
break所在的循环之后的下一条语句
听起来有点绕
下面我们还是来看一下代码
看看它的执行效果吧
这里给出了break的示例程序
12到16行
有一个for循环
循环变量count呢从1开始
循环结束条件呢是小于或等于10
每次循环count自增
循环完的打印操作在每次执行循环体的时候
在控制台当中打印出count的当前值
这在当count小于5的时候
是没有任何问题
但当count自增到5的时候
我们发现 它满足13行的if条件表达式count等于5的条件
那么就会执行第14行的break语句
尽管此时我们循环变量count值呢只有5
还未到达循环结束条件10
但是break语句呢强制程序跳出所在的循环
也就是这里的for
因此实际系统呢只输出1,2,3,4这四个数字
并且
退出整个循环以后呢
我们的count值呢它的更新到了5
看了这个例子以后
再来理解break的含义
是不是简单得多了
接下来我们再来看一个用法类似
但作用完全不同的continue的用法
需要注意的是
continue语句只在循环当中使用
在循环体当中
如果你碰到了continue
它将跳过循环体当中的剩余代码
直接进入到下一次循环
针对循环的类型不同
它跳转的位置呢略有区别
对于for直接跳转到更新区域
对于while和do while语句
跳转到布尔表达式的终止判断位置
如果你还是无法明白continue含义
我们还是通过代码来解释
在这个事例当中 我们将上次break的位置呢改成continue
这对于count从1循环到4的情况没有任何变化
关键看当count等于5的时候
此时满足第12行的if判断语句
从而执行第13行的continue语句
根据前面的解释
continue作用呢它是跳过continue位置之后的所有剩余循环代码
也就是这里的14行
这意味着当前值5不会被打印出来
控制流呢直接跳转到了更新区域
也就是第11行的count++
count变成了6
随后进行循环中止条件的测试
这里的6小于等于10
仍然成立
继续执行
直到循环变量当中的保存的值超过10为止
由于count值不再是5 continue也就无法再次被触发
剩余的6,7,8,9,10也就依次打印在了控制台上
这两个关键字在实际应用场合还是比较多的
例如在很多循环次数不可预知的时候
我们就可以使用break进行循环的控制
下面我们来做个对比体会下它的用法
现在有十个学生组成的班级进行了一次测验
可以得到每个学生的测验成绩
它们是0到100之间的一个整数
现在需要你来写一个程序来确定这个班级的平均成绩
利用我们学过的知识
你完全可以完成这个任务
需要额外指出的是
Java1.5当中添加了一个新的scanner类
它的作用呢是可以根据用户的需要
从输入流当中读取所需的数据或者文本
同时它提供了一系列的方法
便于用户的读取操作
比如说你要读取一个整数
你就可以调用nextInt()方法
你要读取双精度数就可以调用nextDouble方法
如果要读取一行文本
你就可以使用nextLine方法
在具体使用时
首先要引入Scanner这个类
它放在java.util包里面
如果你是使用Alt+/
用eclipse自带的代码提示工具来自动完成类型输入的话
eclipse呢会自动地将该类的导入语句写上
否则你就需要自己手动地在代码的相应位置上写上导入语句
接着我们要创建一个Scanner对象
你可以在第10行这么写
这里的System.in代表台的输入流对象
好 需要注意的是这里的System的S是大写
整个语句创建了一个Scanner对象
并指定这个对象从控制台当中去读取用户输入的数据
有了它我们就可让用户从控制台当中把成绩输入进来
并且保存到一个叫score的变量当中
由于这里有10个学生
为了便于统计 我们先定义一个total变量来保存总成绩
统计的工作就是将用户的成绩累加上去
使用复合赋值语句就可以轻松地搞定
这样的工作需要重复十次
所以我们在第9行的位置上加入一个循环
最简单的方法就是使用一个for来实现
接着呢我们将所有需要操作的语句作为循环体
放置在for循环的大括号当中
使用代码的缩进来增加代码的可读性
这时候你可能会发现第13行当中的total下面有个波浪线
并提示相应的错误信息
将鼠标移动上去
上面的信息提示total这个植入变量没有被初始化
这里的total定义在main方法的内部
像这样定义在方法内部的变量呢我们称之为局部变量
它们在使用之前必须要初始化
你可以单击这个快速修复的链接
eclipse呢会自动地为你添加初始化语句
以完成代码的修复工作
最后呢我们将10个学生的成绩打印出来
这样就可以了
我们来快速地测试一下它的运行效果
这是学生数已知的情况
事实上每个班级的学生人数都是不一样的
为了让程序能适用各种不同的人数
你就无法固定学生的人数
除了固定人数之外
我们还能怎么样控制我们的循环呢
这里呢我们就要利用今天学过的break操作
使用标记来控制循环
我们知道用户的成绩呢
通常都是大于0的数
我们可以指定一个小于0的数
作为用户的退出标记
比如说-1
这样碰到一个退出标记时 我们就可以跳出循环
从而得到当前用户的平均成绩了
有了这个思路以后
我们就可以改造现有的代码
由于学生的人数是不固定的
所以我们先得增加一个n
用于保存统计学生的当前人数
接着我们需要在循环之前先读入用户的输入
当这个输入是一个有效成绩时
累加到total当中
并继续读入下一个成绩
直到用户输入的成绩呢是小于零的结束标志
同时每次循环我们需要对人数统计n呢进行自增
由于人数是不固定的
n就可能会出现0的情况
要避免平均成绩除0的错误
我们需要增加一个判断
然后在else语句块当中
显示No score的类似信息
好了今天的任务呢就完成了 你学会了吗
今天我们介绍了break,continue在循环当中的用法
你要掌握这两个关键字的书写规则
在需要的时候
能正确地使用它们
其实要正确地使用它们并不难
你只需要记住它们最大的区别在于
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