java中多重循环和break、continue语句
一、嵌套循环
循环可以互相嵌套,以实现更加复杂的逻辑,其代码的复杂程度也会提高,对初学者而言这应该是个难点,下面我们通过一些例子说明嵌套循环的使用,读者要自己把这些代码上机练习,并理解程序运行的流程。
先看看一个简单例子,代码如下:
//二重循环
for(int i=0;i<3;i++){
for(int j=0;j<2;j++){
System.out.println("i="+i+",j="+j);
}
}
上面是一个二重循环,因为在for循环里又嵌套了一个循环,当然循环可以无限嵌套,所以也就是有无限重的循环,但是一般我们写代码的时候很少超过三重循环。
在第一层循环中,循环的控制头和上面介绍的没有不同,仅仅只是该循环的循环体里又包含了一个循环,我们需要的是理解这段程序的执行流程:
外层循环i=0时,条件满足进入循环体,并执行第二层循环,
第二层循环是j=0,条件满足进入循环体,并执行里面的输出语句,输出:
i=0,j=0
然后还是第二层的循环还没有结束,继续执行,这个时候j=1,所以输出:
i=0,j=1;
第二层循环结束。
这个时候外层循环还没有结束,i自增1后,又进入循环,并再次执行第二层循环这个时候i=1,又再一次的执行了第二层的循环:
第二层循环是j=0,条件满足进入循环体,并执行里面的输出语句,输出:
i=1,j=0
然后还是第二层的循环还没有结束,继续执行,这个时候j=1,所以输出:
i=1,j=1;
第二层循环结束。
类似的,这个时候外层循环还没有结束,i自增1后,i=2又进入二层循环,所以这个程序最后的输出结果是:
i=0,j=0
i=0,j=1
i=1,j=0
i=1,j=1
i=2,j=0
i=2,j=1
下面我们再具一个稍微复杂一点的程序:输出乘法表。
1×1=2
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
...
1X9 ... ... 9X9=81
实现代码如下:
for(int i=1;i<10;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"X"+i+"="+(i*j)+" ");
}
System.out.println();
}
二、break
break与continue语句和都是可以控制循环的执行流程的,其中break语句可以直接强行跳出整个循环,默认情况下直接跳到下一条语句进行执行。比如我们要输出类似下面的三角形星号符。
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
实现代码如下:
public class Test {
//三角形的高度
// 直角三角形的高度
int hight = 0;
System.out.println("请输入三角形的高度:"); // 提示信息
Scanner scnr = new Scanner(System.in); // 获取控制台输入
hight = scnr.nextInt(); // 在控制台输入中取下一个int值
for (int i = 0; i < hight; i++) { // 按hight的高度一层一层打印
for (int j = 0; j < hight; j++) {
// 每次继续迭代,原则第一层打一个, 第二层打二个,第三层打三个… if (j <= i) {
System.out.print("*"* ");
} else {
// 退出循环的条件,比如在第二层打 第三个是退出
break;
//后面不能写代码了,会提示错误
}
}
System.out.println(); // 每层的换行符
}
读者可以上机演示上面的代码。注意在嵌套循环中break只能跳出自己的循环体,对于父循环体没有任何影响。直接写在break语句后面的代码在Eclipse中会提示错误,因为这些语句具有不可达性。
前面介绍过在java中没有goto语句,但是在循环中使用break语句可以达到类似goto语句的效果,这种用法是在break语句中添加行标号,控制会被传递给当前方法中的带有这一标号的语句,这种格式的写法如下:
break label;
三、continue语句
continue语句语句和break语句一样都是指退出循环,但是区别在于continue特指退出当前一层循环,继续下一层循环的执行。可以认为是continue是对break语句的一种补充机制,提供了终止当前一层循环继续去判断循环控制表达式进而继续执行循环体的可能。Continue跟break类似,同样提供类似goto的功能:
continue toCode;
注意退出循环的方法除了使用break语句/continue语句外,你还可以使用return,return的优先级别非常高,在任何情况下它都会直接终止当前方法的运行。参考下面的示例:
for (int i = 0; i < 3; i++) {
System.out.println("开始第" + i + "次for循环");
if (i == 1) {
continue;//程序运行后面的代码就不会执行,但循环不会退出。
}
System.out.println("看看continue后这里执行了吗?");
}
java中多重循环和break、continue语句的更多相关文章
- java基础 ------- 多重循环 and break与continue
----- 什么是多重循环 ---- 打印数列 public class ForEx { public static void main(String[] args){ for(int i = ...
- Java中带标签的break,continue
首先不带标签的break,continue 就不介绍了.大家平时用的最多的也就是这样的情况了. 首先Java中没有goto,但是可以利用带标签的break, continue来实现类似的跳转. 首先来 ...
- 050 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 12 continue语句
050 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 12 continue语句 本文知识点:continue语句 continue语句 continue ...
- Java中的循环结构进阶
循环结构进阶 学习本章用到的单词 triangle:三角形 circle:圆形 diamond:钻石 password:密码 row:行.排列 二重循环结构 简单的说:二重循环就是一个循环体内又包含另 ...
- java中for循环的6种写法
有些写法上的说明写的过于武断,可能有很多不当之处,仅供参考. package ForLoop; import java.util.ArrayList; import java.util.Itera ...
- Java 中 try、catch、finally 语句块的执行顺序
假设代码顺序书写如下:try → catch → finally → 其他代码 则: 1.正常执行顺序:try → catch → finally → 其他代码 2.try,catch和finally ...
- Java基础(2):Java中的四个跳转语句总结goto,break,continue,return
跳转控制语句 Java中的goto是保留字,目前不能使用.虽然没有goto语句可以增强程序的安全性,但是也带来很多不便,比如说,我想在某个循环知道到某一步的时候就结束,现在就做不了这件事情.为了弥补这 ...
- Java中的循环语句
1.1 while 循环语句 while 语句也称为条件判断语句. 循环方式 : 利用一个条件来控制是否要反复执行这个语句. 语法 : while(条件表达式){ 执行语句 } 当条件表达式的返回值为 ...
- python中的循环以及,continue和break的使用
循环 目标 程序的三大流程 while 循环基本使用 break 和 continue while 循环嵌套 01. 程序的三大流程 在程序开发中,一共有三种流程方式: 顺序 —— 从上向下,顺序执行 ...
随机推荐
- c语言基础之getopt()
getopt() #include <unistd.h> int getopt(int argc, char * const argv[], const char *optstring); ...
- The Preliminary Contest for ICPC Asia Xuzhou 2019 E. XKC's basketball team
题目链接:https://nanti.jisuanke.com/t/41387 思路:我们需要从后往前维护一个递增的序列. 因为:我们要的是wi + m <= wj,j要取最大,即离i最远的那个 ...
- 不要让事实妨碍好故事:Facebook精准广告产品与硅谷创业揭秘,4星奇书《混乱的猴子》
“ 现在,和往常一样,一些有先见之明的学者看到了这一天会再次到来,他们把这次全新的媒体中世纪化过程命名为“第二次口口相传”(Secondary Orality)和“古登堡右括号”(the Gu ...
- springCloud学习1
传统项目架构 传统项目分为三层架构,将业务逻辑层.数据库访问层.控制层放入在一个项目中. 优点:适合于个人或者小团队开发,不适合大团队开发. 分布式项目架构 根据业务需求进行拆分成N个子系统,多个子系 ...
- zzulioj - 2624: 小H的奇怪加法
题目链接:http://acm.zzuli.edu.cn/problem.php?id=2624 题目描述 小H非常喜欢研究算法,尤其是各种加法.没错加法包含很多种,例如二进制中的全加,半加等.全加: ...
- restql 学习一 安装试用
restql 提供了manager 可以方便配置restql 的资源,同时也提供了一个docker-compose 运行环境 以下是一个安装使用 环境准备 docker-compose 文件 ve ...
- plv8 触发器使用
触发器使用 demo CREATE FUNCTION test_trigger() RETURNS TRIGGER AS $ plv8.elog(NOTICE, "NEW = &quo ...
- Asp.Net报https请求报传输流收到意外的 EOF 或 0 个字节
网上搜索,都说是.net framework版本太低,改为.net 4.5以上版本即可.于是使用vs2017环境测试了下,使用.net framework4.5版本确实可以正常返回结果,低于这个版本就 ...
- ajax有哪些方法可以实现跨域?他们都有哪些局限性?
1.服务器端代理:在服务器端设置一个代理,由服务器端向跨域下的网站发出请求,再将请求结果返回给前端. 属于后端的技术,实现起来最麻烦. 2.jsonP,只支持get方式调用. 3.XHR2(cors) ...
- selenium--浏览器滚动条操作
前戏 在进行web自动化的时候,selenium只能找当前屏幕上的标签,如果标签在当前页面没显示下,需要拖动滚动条才能查看到这个元素,这时候就要操作浏览器的滚动条,让当前页面显示这个元素才可以操作,在 ...