1. 程式人生 > >【Java基礎】-多重For迴圈的兩種跳出方式

【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+標識後直接跳出標識的迴圈;

       第二種方式:在下次迴圈開始前才會跳出你想要跳出的迴圈。

用的時候可以根據自己的業務做選擇,當然兩種迴圈式可以達到相同的效果的,有興趣的小夥伴可以自己試一下。