学习Java之如何正确地跳出循环结构

 更新时间:2023年05月21日 11:38:51   作者:一一哥Sun  
我们在利用循环执行重复操作的过程中,存在着一个需求:如何中止,或者说提前结束一个循环,所以就给大家讲解一下,如何在java代码中返回一个结果,如何结束和跳出一个循环,需要的朋友可以参考下

一. break

1. 作用

break关键字可以用于for、while、do-while及switch语句中,用来跳出整个语句块,结束当前循环的执行。 另外我们要特别注意,break 语句总是跳出自己所在的那一层循环 当两个for循环嵌套时,如果break语句位于内层的for循环,它只会跳出内层的for循环,但不会跳出外层的for循环。

2. 语法

break的用法很简单,我们在之前学习switch时就已经使用过了。一般就是在循环或switch语句中编写如下一条语句:

break;

比如我们使用for循环计算从1累加到100的和时,在循环内部,我们可以使用if判断,当i==50就提前利用break关键字结束循环。因此,break经常会配合if语句使用。

3. 案例

3.1 案例一

break会跳出当前for循环。当break执行后,当前整个for循环都会结束执行。

/**
 * @author
 */
public class Demo01 {
    public static void main(String[] args) {
	//break关键字
	//需求:从1累加到100,找到累加到哪个数时,就使得sum和大于888
	// 定义变量保存总和
	int sum = 0;
		
	for (int i = 1; i <= 100; i++) {
            sum = sum + i;
            if (sum > 888) {
		System.out.println("累加到"+i+"时,sum和就大于888");
		// 结束当前循环
		break;
		//这里的语句执行不到,编译阶段就会报错
		//System.out.println("能执行吗??");
            }
            //这里的语句可以执行,当break跳出循环后,就不会再继续执行
            System.out.println("能执行吗??"+i); 
	}
    }
}

大家要注意,我们不能直接在break后面跟着其他语句,否则在编译阶段就会出现”Unreachable code“,如下图所示:

3.2 案例二

需求:将输入的内容进行输出,如果输入"886"就结束当前聊天。

/**
 * @author
 */
import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {
	//break关键字
	Scanner sc = new Scanner(System.in);
	while(true){
            String word = sc.next();
            if(word.equals("886")){
                //跳出当前循环
		break;
            } 
            //输出内容
            System.out.println(word);            
	}
    }
}

二. continue

1. 作用

continue适用于各种循环结构中,不能用于其他地方,用于跳过本次循环,执行下一次循环 break可以跳出当前循环,即整个循环都不会执行了。而与break不同,continue是提前结束本次循环,但会继续执行下一次的循环。在多层嵌套的循环中,continue也可以通过标签指明要跳过的是哪一层循环,并且同样是只结束自己所在的循环。

2.语法

continue的用法很简单,在循环结构中直接使用如下语句即可:

continue;

3. 案例

3.1 案例一

需求:输出100以内,所有不是3的倍数的整数。使用continue结束当前循环,继续下一次循环。

/**
 * @author
 */
public class Demo03 {
    public static void main(String[] args) {
	//continue关键字
	//案例:输出100以内,所有不是3的倍数的整数
	for(int i = 1; i <= 100 ; i++){
            if(i % 3 == 0){
                //结束本次循环,继续执行下次循环,并不会结束整个循环,直到完成整个循环
                continue;
            }    
            System.out.println(i);
        }
    }
}

3.2 案例二

需求:将输入的内容进行输出,如果输入"886"就结束当前聊天。如果输入了敏感词汇,则用“***”替代显示。

/**
 * @author
 */
import java.util.Scanner;

public class Demo04 {
    public static void main(String[] args) {
	//continue关键字
	//需求:将输入的内容进行输出,如输入"886"就结束当前聊天。如输入了敏感词汇,则用“***”替代显示
	Scanner sc = new Scanner(System.in);
		
	while(true){
            String word = sc.next();
            if(word.equals("886")){
		//跳出整个循环
		break;
            }            
		    
            if(word.equals("WC")||word.equals("SB")){
		System.out.println("***");
                //中止本次循环,继续下一次循环
		continue;
            }
            System.out.println(word);            
	}
    }
}

4. 多层循环嵌套时的跳转

当多层循环嵌套时,内层循环可以使用外层循环中的变量。外层循环每循环一次,内层循环都会完整的执行完内层循环的所有次数。break/continue只会控制当前的循环,当多层循环嵌套时,为了便于控制,我们可以通过给循环设定标签的形式来进行控制。

4.1 语法

多层循环嵌套时,带有标签的语法结构如下:

label1: { ……
    label2: { ……
        label3: { ……
            break label2;
        } 
    } 
}

当有多层循环嵌套,我们可以给每一次循环起个标签名称,名称随意,只要符合java里的标识符命名规则即可。然后结合break或者continue就可以结束当前或本次循环。

4.2 案例

这里是多层循环嵌套时带有标签的案例,供大家参考如下:

/**
 * @author 
 */
public class Demo07 {
    public static void main(String[] args) {
	//多层循环嵌套
        //打印5行5列的矩形,用 * 表示
	label01:for(int i = 1 ; i <= 5 ;i++){ //控制行	
            label02:for(int j = 1 ; j <= 5 ; j++){//控制列
                System.out.print(" * ");
                //当执行到第3列时,提前跳出循环
                if(j==3) {
                    break label02;
                    //continue label02;
                }
            }   
            //进行换行
            System.out.println();
       }
   }
}

三. return

关于return关键字,今天先简单介绍以后,后面我们在学习Java的”方法“时会详细讲解!

1. 作用

return并不是专门用来结束循环的关键字,它可以用来结束一个方法或循环。当一个方法执行到return语句时,该方法就会被结束。与break和continue不同的是,return是直接结束整个方法,不管这个return处在多少层的循环之内。

2. 语法

return关键字的基本语法如下:

访问修饰符 返回值类型 方法名(参数...){
    //方法体
    //注意:这里返回值的类型必须与方法上声明的返回值类型一致!
    return 返回值;
}

3. 案例

因为return的用法,主要是和java里的”方法“有关系,所以在这里先简单给大家展示两个基本的案例,以后我们再详细学习方法和return的内容。

3.1 案例一

在方法中返回值指定类型的结果。

/**
 * @author 
 */
public class Demo05 {
    public static void main(String[] args) {
	// return关键字
	//调用定义的方法,并获取返回结果
	String result = sayHello();
	System.out.println("result="+result);
    }
	
    //定义一个带有String类型返回值的方法
    //访问修饰符 返回值类型 
    public static String sayHello() {
	//本方法中只能返回String类型
	return "Hello,壹壹哥!";
    }
}

3.2 案例二

return也可以在循环中使用,用于结束整个循环。

/**
 * @author
 */
public class Demo06 {
    public static void main(String[] args) {
	// return关键字
	for (int i = 1; i <= 10; i++) {
            for (int j = 1; j <= 10; j++) {
                if (i + j == 10) {
                    //结束整个循环的执行,无论循环的层次
                    return;
		}		
                System.out.println("i = " + i + ",j = " + j + ",i + j = " + (i + j));
            }
	}
	//这里执行不到
	System.out.println("循环之后的语句");
    }
}

四. 结语

至此,就把return、break、continue这三个关键字给大家讲解完毕了,现在你知道它们三者的用法及其区别了吗?接下来就给大家对这几个关键字进行一下总结。

1. break与continue的对比

1.1 特点不同

  • break语句可以跳出当前循环;
  • break语句通常配合if来使用,在满足条件时可以提前结束整个循环;
  • break语句总是跳出最近的一层循环;
  • continue语句可以提前结束本次循环;
  • continue语句也可以配合if语句,在满足条件时提前结束本次循环。

1.2 使用场合不同

  • break可用于switch结构和循环结构中;
  • continue只能用于循环结构中。

1.3 作用不同

  • break语句用于终止某个循环,程序跳转到循环块外的下一条语句中;
  • continue语句用于跳出本次循环,进入到下一次循环。

2. continue、break、return三者的对比

  • break:结束所在的循环;
  • continue:跳过本次循环,继续下一次循环;
  • return:结束整个方法。

以上就是给大家总结的今天的重点内容,希望你要熟练记忆这些特性哦。

以上就是学习Java之如何正确地跳出循环结构的详细内容,更多关于Java 跳出循环结构的资料请关注脚本之家其它相关文章!

相关文章

  • JAVA生成xml文件简单示例

    JAVA生成xml文件简单示例

    这篇文章主要介绍了JAVA生成xml文件的相关资料,在Java中可以使用DOM或者JDOM来生成XML文件,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • Java FutureTask类使用案例解析

    Java FutureTask类使用案例解析

    这篇文章主要介绍了Java FutureTask类使用案例解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值析,需要的朋友可以参考下
    2020-04-04
  • SpringBoot使用Caffeine实现缓存的示例代码

    SpringBoot使用Caffeine实现缓存的示例代码

    本文主要介绍了SpringBoot使用Caffeine实现缓存的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Java并行执行任务的几种方案小结

    Java并行执行任务的几种方案小结

    这篇文章主要介绍了Java并行执行任务的几种方案小结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 浅谈Java注解和动态代理

    浅谈Java注解和动态代理

    这篇文章主要介绍了Java中有关注解和动态代理的一些知识,涉及了Annotation、数据类型等相关内容,需要的朋友可以参考下。
    2017-09-09
  • springboot-启动bean冲突的解决

    springboot-启动bean冲突的解决

    这篇文章主要介绍了springboot-启动bean冲突的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • kafka分布式消息系统基本架构及功能详解

    kafka分布式消息系统基本架构及功能详解

    这篇文章主要为大家介绍了kafka分布式消息系统基本架构及功能详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Java为什么使用补码进行计算的原因分析

    Java为什么使用补码进行计算的原因分析

    这篇文章主要介绍了Java为什么使用补码进行计算的原因分析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Mybatis多表关联查询的实现(DEMO)

    Mybatis多表关联查询的实现(DEMO)

    本节要实现的是多表关联查询的简单demo。场景是根据id查询某商品分类信息,并展示该分类下的商品列表,需要的朋友可以参考下
    2017-02-02
  • 解决SpringMVC项目连接RabbitMQ出错的问题

    解决SpringMVC项目连接RabbitMQ出错的问题

    这篇文章主要介绍了解决SpringMVC项目连接RabbitMQ出错的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01

最新评论