首页 > 其他分享 >第三章《数组与循环》第7节:break与continue关键字

第三章《数组与循环》第7节:break与continue关键字

时间:2022-12-29 18:32:17浏览次数:56  
标签:语句 外层 中止 break 关键字 continue 执行 循环

​在实际开发过程中,并不是任何情况下都要让循环从始至终全部执行完毕,有时需要对循的执行进行一定程度的控制。Java语言中提供了break和continue两个关键字来控制循环的执行。本小节首先介绍break关键字的使用。

3.7.1 break关键字

在前面几个小节所列举的循环例子中,所有的循环都是从头到尾全部执行完毕。但有的时候,不需要循环全部执行完毕就可以提前结束循环。比如,用循环的方式在一个元素不重复的数组中寻找某个特定的数字,当找到这个数字之后,如果继续向后寻找,数组中一定不会再次出现这个数字,因此可以提前结束循环。​

专业上,把提前结束循环的操作称为“中止循环”。需要注意,“中止循环”和“终止循环”并不是一个概念。“中止循环”是指循环没有运行完预定的次数就提前结束,这个操作需要用break关键字来完成。break关键字可以单独构成一条语句,因此当break后面加上分号时,也被称为break语句。虚拟机执行循环语句时遇到break语句,会立刻中止循环,即使本轮循环中还有一部分循环语句没有执行完毕也会如此。【例03_12】演示了在数组中寻找特定元素,并在找到该元素后如何使用break语句中止循环。​

【例03_12寻找特定元素】

Exam03_12.java​


import java.util.Scanner;

public class Exam03_12 {
public static void main(String[] args) {
int[] array = { 1, 4, 3, 5, 2 };// 由数字1-5构成的乱序无重复的数组
Scanner sc = new Scanner(System.in);
int input;// 用户输入要寻找的数字
System.out.println("请输入1-5中的一个数字");
input = sc.nextInt();
for (int i = 0; i < array.length; i++) {// 以循环的方式寻找特定元素
if (array[i] == input) {// 如果找到
System.out.println(input + "是数组中第" + (i + 1) + "个元素");// 输出其位置
break;// 中止循环
}
}
}
}

在【例03_12】中,array是一个元素不重复且无序的数组,它由数字1-5构成。程序运行后,由用户任意输入1-5中的一个数字,并且通过循环的方式查找这个数字,如果找到该数字后,打印该数字在数组中的位置。因为数组元素不重复,所以找到这个数字后就无需向后继续查找,此时可以中止循环以避免后面无意义的查找操作。需要提醒各位读者,在输出被查找元素的位置时,使用的是i+1而不是i,原因是数组的下标是从0开始的,而普通用户的观念中,计数都从1开始的,所以要用i+1来表示某个元素在数组中的位置。​

在嵌套循环结构中,直接使用break语句仅能中止它所在那一层循环,无法中止其外层循环的运行。如果必须要在内层循环中用break语句中止外层循环,需要先给外层循环设定一个名称,并且用在break关键字的后面加上这个名称,通过这样的方式就可以跳出外层循环。给循环设定名称的格式如下:

名称:循环

【例03_13】演示了如何使用break语句在内层循环里中止外层循环的执行。​

【例03_13中止外层循环】

Exam03_13.java​

public class Exam03_13 {
public static void main(String[] args) {
outter: for (int i = 1; i <= 5; i++) {// 给外层循环命名为outter
System.out.println("外层循环第" + i + "次执行");
for (int j = 1; j <= 5; j++) {
if (i == 2 && j == 4) {
break outter;// 中止外层循环
}
System.out.println(" 内层循环第" + j + "次执行");
}
}
}
}

在【例03_13】中有内外两层循环,外层循环被命名为outter。当外层循环变量i的值为2,并且内层循环变量j的值为4的时候,通过“break outter;”这条语句即可中止外层循环。语句中的“outter”就是外层循环的名称。【例03_13】的运行结果为:​

外层循环第1次执行​
内层循环第1次执行​
内层循环第2次执行​
内层循环第3次执行​
内层循环第4次执行​
内层循环第5次执行​
外层循环第2次执行​
内层循环第1次执行​
内层循环第2次执行​
内层循环第3次执行​

通过运行结果可以看出:外层循环在第2次执行并未全部完成的情况下就被中止。另外,当程序遇到break语句时会立刻中止循环,即使本次循环仍然有未执行的语句也是如此,因此在条件“i==2&&j==4”成立时,虚拟机立刻中止了循环,后面的输出语句并未执行。​

在实际开发过程中,不建议各位读者使用这样的方式“跨层”中止循环。因为这样的编程方式容易引起程序的混乱。大家最好还是以“逐层中止”的方式结束各层循环,这样更为稳妥。​

3.7.2 continue关键字

有的时候,程序并不需要中止整个循环,而只是需要省略掉本次循环中的某些操作并直接进入下一次循环。Java语言中的continue关键字就能实现这样的效果。continue关键字也可以单独构成一条语句,虚拟机执行循环语句时遇到continue语句,会放弃执行本次循环中剩余的语句并直接进入到下一轮循环中。​

假设某公司职员每周工作5天,每天做3件事:1、打卡2、写文案3、开每日总结会议。而每周第2个工作日因领导有其他工作安排,无需开总结会议。这个职员每周的工作就可以用【例03_14】的程序模拟:​

【例03_14 5日工作内容】

Exam03_14.java​

public class Exam03_14 {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
System.out.println("第" + i + "工作日:");
System.out.println(" 打卡");
System.out.println(" 写文案");
if (i == 2) {
continue;
}
System.out.println(" 开总结会");
}
}
}

【例03_14】的运行结果如下:​

第1工作日:​
打卡​
写文案​
开总结会​
第2工作日:​
打卡​
写文案​
第3工作日:​
打卡​
写文案​
开总结会​
第4工作日:​
打卡​
写文案​
开总结会​
第5工作日:​
打卡​
写文案​
开总结会​

通过程序运行结果可以看到:在continue语句的作用下,第2工作日的“开总结会议”这个操作被省略掉了,但循环并没有中止,而是直接进入了第3轮。​

同break一样,当嵌套循环中出现了continue语句时,它仅能省略执行本层循环中后面的语句。如果希望省略执行外层循环中的语句,也需先对外层循环进行命名,并且在continue之后加上外层循环的名称。在此仍然建议各位读者在实际开发过程中尽量不要“跨层”使用continue语句。

除此文字版教程外,小伙伴们还可以点击这里观看我在本站的视频课程学习Java。

标签:语句,外层,中止,break,关键字,continue,执行,循环
From: https://blog.51cto.com/mugexuetang/5978708

相关文章

  • Java8接口关键字default
    java1.8以后可以在接口中使用关键字default来是定义变量和方法,解决接口增加新的功能,又不想修改所有实现类的方法interfaceA{publicdefaultvoidmethod(......
  • 视频直播系统源码,const声明关键字是哪一个
    视频直播系统源码,const声明关键字是哪一个const声明的变量也具有块级作用域。 if(1){      consta=20    if(1){      consta......
  • python 实现抖音通过关键字搜索下载短视频
    在日常生活中,随着短视频的发展,大家使用抖音进行数据搜索,也占了一大部分,今天给大家带来的文章抖音根据关键词进行视频下载有什么作用呢?其实很多时候我们制作视频,写脚本,都需要......
  • vue 实现通过字符串关键字符动态渲染 input 输入框
    vue实现通过字符串关键字符动态渲染input输入框今天做一个简单的demo,就是有一个字符串,字符串里面有标识符,前端检测到标识符之后,需要将这个标识符转换成一个input输入框......
  • 命令行工具sshfind:根据主机名关键字搜索~./ssh/config主机相关配置项(Python版本)
    概述:OpenSSH客户端默认读取~/.ssh/config作为主机配置文件,一旦配置的主机过多,筛选和定位某个主机就成了问题,特编写此工具,可在终端窗口中使用sshfindxxx(如:sshfindrackne......
  • Perl实现的命令行小工具sshfind:通过主机名称关键字搜索和筛选~/.ssh/config主机配置项
    作用读取SSH客户端配置文件~/.ssh/config,根据主机名称筛选对应的主机相关配置项,适用于~/.ssh/config主机信息过多,不便于查找的情况,如本人该文件配置了500+主机;使用方法:......
  • Static静态关键字
    Static静态关键字定义static是静态的意思,可以修饰成员变量和成员方法。static修饰成员变量表示该成员变量在内存中只能存储一份,可以被共享访问,修改。成员变量可以分为......
  • [Algorithm] 双关键字查询问题
    问题现在米尔科村的考试时间。每个人都想尽可能不费吹灰之力地通过考试,这并不容易。米尔科意识到,对他来说,最好是找到比他了解更多的人,并向他们学习。每个人都跟着,现在每个......
  • 面向对象-static关键字
    概述static是静态修饰符,在程序中任何变量或则代码都是在编译时由系统自动分配内存进行存储,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个......
  • ts14_super关键字
    (function(){classAnimal{name:stringconstructor(name:string){this.name=name}sayhello(){......