在Java中如何跳出當前的多重循環

public class test {
	public static void main(String[] args) {
		ok: //使用標記符號
		for(int i = 0; i <10;i++)
		{
			for (int j = 0; j < 10; j++) {
				System.out.println("i=" + i + ",j=" + j);
				if(j==5)break ok;
			}
		}
	}
}


下面是參考別人資料,比較深入的說明如何使用帶有標記符號的contiune,break。

public class testbreak {
	public void test() {
		int i = 0;
		// 外部標記
		outer: do {
			System.out.println("outer i is:" + i);
			// 內部標記
			inner: for (; i < 10; i++) {
				System.out.println("inner i is: " + i);
				if (i == 1) {
					System.out.println("continue");
					// 中斷單前循環,進入下一循環
					continue;
				}
				if (i == 2) {
					System.out.println("continue outer");
					// 注意此處i++,如果註釋掉會死循環,因爲執行完continue outer後,
					// 不會觸發for(; i < 10; i++)中的i++遞增因子
					i++;
					// 中斷單前循環,跳到outer標籤處,執行do循環
					continue outer;
				}
				if (i == 3) {
					System.out.println("continue inner");
					// 此處如果添加i++,會和for中的i++一起執行兩次,
					// i++;
					// 中斷單前循環,跳到inner 標籤,執行接着的for循環
					continue inner;
				}
				if (i == 4) {
					System.out.println("break");
					// 這裏的i++不能註釋,否則爲死循環,
					// 因爲break和break+標籤都不會觸發for(; i < 10; i++)中的i++遞增因子
					i++;
					// 退出內部循環for
					break;
				}
				if (i == 7) {
					System.out.println("break inner");
					i++;
					// 中斷並跳出inner所指向的for循環,不過由於外層的do循環
					// 程序會繼續進入for循環
					break inner;
				}
				if (i == 9) {
					System.out.println("break outer");
					// i++;
					// 中斷並跳出outer所指的do循環
					break outer;
				}
			}
		} while (true);
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		testbreak bc = new testbreak();
		bc.test();
	}
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章