Java跳出多重循环

From: https://www.cnblogs.com/fastfn/p/9777067.html

场景:很多的时候需要做到跳出多重循环,而在Java中虽然后goto关键字,但是是保留字,并没有启用。而在处理分支结构的if...else,switch...case,好像都达不到想要的效果。

作为终止当前代码的return并不能完成业务需求,能用到的只有break,但是break只能跳出当前的循环。

代码示例:break

复制代码

        private static void testBreak() {for (int i = 0; i < 3; i++) {for (int j = 0; j < 5; j++) {System.out.println("testBreak==j==" + j);if (j == 2)break;}System.out.println("testBreak==i====>>>" + i);}System.out.println("testBreak======>>>END");}        

复制代码

结果:

复制代码

testBreak==j==0
testBreak==j==1
testBreak==j==2
testBreak==i====>>>0
testBreak==j==0
testBreak==j==1
testBreak==j==2
testBreak==i====>>>1
testBreak==j==0
testBreak==j==1
testBreak==j==2
testBreak==i====>>>2
testBreak======>>>END

复制代码

结论:所有的执行到 j==2 的时候都会终止但是只能跳出当前循环。

 

解决方案一:继续使用break,但是在添加一个flag作为判断条件,每次判断条件的时候都会判断循环和flag.

代码:

复制代码

       private static void outloopByBreak() {boolean flag = true;for (int i = 0; i < 3 && flag; i++) {for (int j = 0; j < 5; j++) {System.out.println("outloopByBreak==j==" + j);if (j == 2) {flag = false;break;}}System.out.println("outloopByBreak==i====>>>" + i);}System.out.println("outloopByBreak======>>>END");}    

复制代码

结果:

outloopByBreak==j==0
outloopByBreak==j==1
outloopByBreak==j==2
outloopByBreak==i====>>>0
outloopByBreak======>>>END

结论:能解决跳出循环的问题,但是是会在内部循环的完成之后继续往下执行,知道下次判断才会跳出循环。

 

解决方案二:Java中break有一种用法可以做到类似goto的效果,在需要跳出的循环之前加一个标志之后break 标志;可以做到跳出循环(推荐使用)。

代码:

复制代码

    private static void outloopByBreakLikeGoto() {flag: for (int i = 0; i < 3; i++) {for (int j = 0; j < 5; j++) {System.out.println("outloopByBreakLikeGoto==j==" + j);if (j == 2) break flag;}System.out.println("outloopByBreakLikeGoto==i====>>>" + i);}System.out.println("outloopByBreakLikeGoto======>>>END");}

复制代码

结果:

outloopByBreakLikeGoto==j==0
outloopByBreakLikeGoto==j==1
outloopByBreakLikeGoto==j==2
outloopByBreakLikeGoto======>>>END

结论:做到了类似goto的效果

 

解决方案三:try...catch方式也能做到跳出多重循环的效果

代码:

复制代码

        private static void outloopByTryCatch() {try {for (int i = 0; i < 3; i++) {for (int j = 0; j < 5; j++) {System.out.println("outloopByTryCatch==j==" + j);if (j == 2) throw new Exception();}System.out.println("outloopByTryCatch==i====>>>" + i);}} catch (Exception e) {System.out.println("====>>outloopByTryCatch跳出");}System.out.println("outloopByTryCatch======>>>END");}        

复制代码

结果:

outloopByTryCatch==j==0
outloopByTryCatch==j==1
outloopByTryCatch==j==2
====>>outloopByTryCatch跳出
outloopByTryCatch======>>>END

结论:用抛异常的方式跳出,但是不推荐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402509.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CCF 节日

问题描述有一类节日的日期并不是固定的&#xff0c;而是以“a月的第b个星期c”的形式定下来的&#xff0c;比如说母亲节就定为每年的五月的第二个星期日。现在&#xff0c;给你a&#xff0c;b&#xff0c;c和y1, y2(1850 ≤ y1, y2 ≤ 2050)&#xff0c;希望你输出从公元y1年到…

回文数算法

1、回文数&#xff1a;一种数字&#xff0c;如&#xff1a;12321, 这个数字正读是12321&#xff0c;倒读也是12321&#xff0c;即&#xff1a;将这个数的数字按相反的顺序重新排列后&#xff0c;所得到的数和原来的数一样。回文数判别算法&#xff08;java实现&#xff09;impo…

深入了解scanf() getchar()和gets()等函数之间的区别

----------------------------------------------------| 问题描述一&#xff1a;&#xff08;分析scanf()和getchar()读取字符&#xff09; |-------------------------------------------------- scanf(), getchar()等都是标准输入函数&#xff0c;一般人都会觉得这几个函数…

java基础集合简介Map(三)下

From: https://www.cnblogs.com/douyu2580860/p/8358768.html --Map接口简介 今天来看一看map集合&#xff0c;map映射接口&#xff0c;用于存放键值对&#xff0c;<key,value>&#xff0c;通过key来查找value,顾名思义key不能为空&#xff0c;唯一且不重复&#xff0c;不…

横向量与矩阵的乘积

设Tj(Tj1, Tj2, ..., Tjn)为横向量。而iδ是Tj中第δ位不为零的元素&#xff0c;1≤δ≤z。 令hjTjH, 则hj是TH的第j行。且有 hjΣ(ki1, i2, ..., iz)Tj,kHk. 从上式看&#xff0c; &#xff08;1&#xff09;可以将横向量的第k位视为右边矩阵第k行是否叠加的控制信号。 &#…

MySQL日期时间函数大全(转)

DAYOFWEEK(date) 返回日期date是星期几(1星期天,2星期一,……7星期六,ODBC标准)mysql> select DAYOFWEEK(1998-02-03);   -> 3 WEEKDAY(date)  返回日期date是星期几(0星期一,1星期二,……6 星期天)。 mysql> select WEEKDAY(1997-10-04 22:23:00);   -> 5 my…

C语言常见错误

对于刚学编程&#xff0c;刚接触C的新手来说&#xff0c;编译运行报错是最头疼的一件事&#xff0c;爆出一堆英文&#xff0c;英语差一点的又不知道什么意思&#xff0c;所以也不知道如何去改&#xff0c;在此&#xff0c;我给大家传一份常见错误中英文对照表及简单解释&#x…

screen 断开 screen -r 不能进入断开的会话

From: https://www.wrox.org/archives/541 screen意外断开后screen -r *** 命令不能进入断开的会话&#xff0c;出现如下提示&#xff1a; There is a screen on: 11103.*** (Attached) There is no screen to be resumed matching ***. 这个时候可以用下面这条命令进入&…

mysql数据迁移

[rootdns var]# service mysqld stop Shutting down MySQL.. [rootdns bin]# ./mysql_install_db --usermysql --datadir/data/mysql_data2转载于:https://blog.51cto.com/alwaysyunwei/1260567

从getmemery()函数看内存管理、函数传参等一系列问题

在C 面试题目中&#xff0c;会经常出现getmemery()函数的改错题&#xff0c;比如下面这道题&#xff0c; 例一&#xff1a;代码如下&#xff1a; [cpp] view plaincopy #include <stdio.h> char *getmemery() { char p[] "hello world!"; …

Java中array、List、Set互相转换

From: https://www.cnblogs.com/yysbolg/p/9977365.html 数组转List String[] staffs new String[]{"A", "B", "C"}; List staffsList Arrays.asList(staffs);//注意: Arrays.asList() 返回一个受指定数组决定的固定大小的列表。所以不能做 a…

Apache Shiro 使用手册(三)Shiro 授权

授权即访问控制&#xff0c;它将判断用户在应用程序中对资源是否拥有相应的访问权限。 如&#xff0c;判断一个用户有查看页面的权限&#xff0c;编辑数据的权限&#xff0c;拥有某一按钮的权限&#xff0c;以及是否拥有打印的权限等等。 一、授权的三要素授权有着三个核心元素…

UVa 10026 - Shoemaker's Problem

题目大意&#xff1a;鞋匠有n个任务&#xff0c;第i个任务要花费ti天&#xff0c;同时第i个任务每耽误一天要有fi的罚金。求完成所有任务的最小罚金。 虽然知道是贪心&#xff0c;可是并不确定如何作贪心选择&#xff0c;只好“取经”了...假如有两个任务i和j&#xff0c;先做i…

mybatis中LIKE模糊查询的几种写法以及注意点

From: https://blog.csdn.net/zhenwei1994/article/details/81876278 mybatis中对于使用like来进行模糊查询的几种方式&#xff1a; &#xff08;1&#xff09;使用${...} 注意&#xff1a;由于$是参数直接注入的&#xff0c;导致这种写法&#xff0c;大括号里面不能注明jdb…

c头文件(.h)的作用

C语言的著作中&#xff0c;至今还没发现把.h文件的用法写的透彻的。在实际应用中也只能依葫芦画瓢&#xff0c;只知其然不知其所以然&#xff0c;甚是郁闷&#xff01;闲来无事&#xff0c;便将搜集网络的相关内容整理一下&#xff0c;以便加深自己的理解 理论概述&#xff1a;…

在VS2012中实现Ext JS的智能提示太简单了

Visual Studio 2012太强大了&#xff0c;居然能自己会去提取Ext JS的类的属性和方法&#xff0c;从而实现只能提示。下面就来介绍一下实现这个功能。在Visual Studio 2012中随便创建一个Web项目&#xff0c;我创建了一个空的Web项目&#xff0c;目录结构如下图所示&#xff1a;…

tomcat bug之部署应用的时候经常会发上startup failed due to previous errors

在tomcat上部署应用的时候经常会发上startup failed due to previous errors错误。这个错误产生以后经常会让人摸不到头脑。以下是几点查找经验&#xff1a; 1.web.xml文件&#xff0c;这个文件中定义了很多web服务启动需要的类、xml文件&#xff0c;如果这些找不到就会发生sta…

mybatis 查询之神坑

先看一个示例&#xff1a; 数据表数据&#xff1a; mybatis类和查询语句&#xff1a; 1. 当UserInfoMap中所有字段(包含association)都为NULL的话&#xff0c;getUserInfo的返回结果是个null&#xff0c;即使查询的记录存在&#xff01;运行结果如下&#xff1a; 2019-06-26 …

微软万圣节文件

为什么80%的码农都做不了架构师&#xff1f;>>> http://www.aka.org.cn/Docs/halloween/halloweenDoc.html 微软万圣节文件 圣节文件在微软以外被用作称呼一系列来源可靠的备忘录&#xff0c;内容是微软总部用来对付开源软件&#xff08;特别是Linux&#xff09;的…

linux C 学习 简单字符串逆序输出

看了下网上的字符串逆序输出&#xff0c;都相对复杂&#xff0c;下面给一个简单的字符串逆序输出小程序实现: [cpp] view plaincopy #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int i; int n; …