嵌套循环

Posted 寻觅beyond

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌套循环相关的知识,希望对你有一定的参考价值。

Java语言中的各种循环、选择、中断语句和C/C++一般无二。

选择结构 循环结构 中断(跳转)
if for return
if else while break
if elseif do while continue
switch foreach(遍历数组)  

这里主要讲一下,for嵌套循环中出现中断(跳转)语句的情况。

先看如下一段代码(Test.java):

public class Test{
	public static void main(String[] args){
		System.out.println("The first loop");
		for(int i=0;i<5;i++){
			for(int j=1;j<10;j++){
				if(j%2==0){
					continue;
				}
				System.out.print(j);
			}
			System.out.print("\n");
		}
		System.out.println("The second loop");
		for(int i=0;i<5;i++){
			for(int j=1;j<10;j++){
				if(j%2==0){
					break;
				}
				System.out.print(j);
			}
			System.out.print("\n");
		}
	}
}
// 输出
// The first loop
// 13579
// 13579
// 13579 
// 13579
// 13579
//The second loop
//1
//1
//1
//1
//1

continue用于结束本次循环,当次是针对continue所在的那个小循环(上端代码,continue结束的是for循环里的那个for循环中j%2=0的那个单次循环,继续进行第二个for循环里面的j++操作,而不是外层for循环的i++)。

break用于结束当前循环,上段代码为例,当j%2=0,break结束的是内层for循环的整个操作,不再进行内层循环j++操作,直接返回外层循环,进行i++,然后再进行重新进行内层for循环。

拓展:

如果想当内层循环j%2=0时,用continue实现结束外层for循环的本次循环,可以加一个标签实现,标签名自定,通常用label来表示。

如下段代码(Test1.java):

public class Test1{
	public static void main(String[] args){
		System.out.println("The first loop");
		label:for(int i=0;i<5;i++){
			for(int j=1;j<10;j++){
				if(j%2==0){
					continue label;
				}
				System.out.print(j);
			}
			System.out.print("\n");
		}
	}
}
// 输出
// The first loop
// 11111

使用标签后,一旦内循环j%2=0,则结束外层for循环的本次循环,不再进行内层for循环的j++,而是直接进行外层for循环的i++。

同样,break有也类似的用法,只不过break会结束外层for循环,整个结束,不再进行外层和内层的循序。

代码及结果如下(Test2.java):

public class Test2{
	public static void main(String[] args){
		System.out.println("The first loop");
		label:for(int i=0;i<5;i++){
			for(int j=1;j<10;j++){
				if(j%2==0){
					break label;
				}
				System.out.print(j);
			}
			System.out.print("\n");
		}
	}
}
// 输出
// The first loop
// 1

也许我们在学习过程中,会遇到更复杂的循环嵌套,超过两层,甚至三四层,对于他们的解决方法基本类似,只要分清本次循环和当前循环的“循环”是指的哪个即可。另外,如果嵌套太多的话,一定要试着去优化代码!

 

以上是关于嵌套循环的主要内容,如果未能解决你的问题,请参考以下文章

Android 动画嵌套片段

Recyclerview 滚动在嵌套滚动视图中的片段中不起作用

常用python日期日志获取内容循环的代码片段

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销

在java中,如何跳出当前的嵌套循环

访问嵌套片段的文本字段