【Java基础】-多重For循环的两种跳出方式

先来小段Demo,自己跑一下就能看到效果了:

public static void main(String[] args) {
		List<String> listA = new ArrayList<String>();
		List<String> listB = new ArrayList<String>();
		List<String> listC = new ArrayList<String>();
		listA.add("1");
		listA.add("2");
		listA.add("3");
		listB.add("一");
		listB.add("二");
		listB.add("三");
		listC.add("one");
		listC.add("two");
		listC.add("three");

		// 第一种方式:循环前面加标识,break相应的标识
		System.out.println("第一种方式:循环前面加标识,break相应的标识");
		A: for (int i = 0; i < listA.size(); i++) {
			System.out.println("A列表:" + listA.get(i));
			if (listA.get(i).equals("2")) {
				break A;
			}
			B: for (int j = 0; j < listB.size(); j++) {
				System.out.println("B列表:" + listB.get(j));
				if (listB.get(j).equals("二")) {
					break B;
				}
				C: for (int k = 0; k < listC.size(); k++) {
					System.out.println("C列表:" + listC.get(k));
					if (listC.get(k).equals("two")) {
						break C;
					}
				}

			}
		}

		// 第二种方式:声明变量,在循环中改变变量值
		System.out.println("第二种方式:声明变量,在循环中改变变量值");
		boolean flagA = true;
		for (int i = 0; i < listA.size() && flagA; i++) {
			System.out.println("A列表:" + listA.get(i));
			if (listA.get(i).equals("2")) {
				flagA = false;
			}
			boolean flagB = true;
			for (int j = 0; j < listB.size() && flagB; j++) {
				System.out.println("B列表:" + listB.get(j));
				if (listB.get(j).equals("二")) {
					flagB = false;
				}
				boolean flagC = true;
				for (int k = 0; k < listC.size() && flagC; k++) {
					System.out.println("C列表:" + listC.get(k));
					if (listC.get(k).equals("two")) {
						flagC = false;
					}
				}

			}
		}
    }

控制台输出效果如下: 

第一种方式:循环前面加标识,break相应的标识
A列表:1
B列表:一
C列表:one
C列表:two
B列表:二
A列表:2
第二种方式:声明变量,在循环中改变变量值
A列表:1
B列表:一
C列表:one
C列表:two
B列表:二
C列表:one
C列表:two
A列表:2
B列表:一
C列表:one
C列表:two
B列表:二
C列表:one
C列表:two

 从上面的效果中可以看出来两种方式都可以跳出你想要跳出的循环。

不同点在于:

       第一种方式:在执行break+标识后直接跳出标识的循环;

       第二种方式:在下次循环开始前才会跳出你想要跳出的循环。

用的时候可以根据自己的业务做选择,当然两种循环式可以达到相同的效果的,有兴趣的小伙伴可以自己试一下。

猜你喜欢

转载自blog.csdn.net/weixin_38256991/article/details/83151683