1. 程式人生 > >Java之路:break、continue和return

Java之路:break、continue和return

1、不帶標籤break

public class BCR {
	public static void main(String[] args) {
		int i, j;
		for(i = 1; i < 10; i++) {
			for(j = 1; j < 10; j++) {
				if(j%3 == 0)
					break;	// 跳出內層迴圈
				System.out.println("j = " + j);
			}
			System.out.println("迴圈中斷,跳出內層迴圈:j = " + j);
			if(i%3 == 0)
				break
; // 跳出外層迴圈 System.out.println("*********i = " + i + "**********"); } System.out.println("迴圈中斷,跳出內外迴圈:i = " + i); } }

【結果】
在這裡插入圖片描述
break跳出迴圈,但只能跳出一層迴圈。

2、帶標籤break

public class BCR {

	public static void main(String[] args) {
		int i, j, k;
		for(i = 0; i < 2; i++) {
			System.out.println("外層迴圈:i = "
+ i); loop: // 標籤 for(j = 0; j < 3; j++) { System.out.println("中層迴圈:j = " + j); for(k = 0; k < 10; k++) { System.out.println("內層迴圈:k = " + k); break loop; // 跳出標籤 } } } } }

【結果】
在這裡插入圖片描述
【結果分析】
當程式執行到**break loop;**後,跳出中層迴圈,執行外層迴圈剩餘程式碼。

3、不帶標籤continue

作用:結束本次迴圈。

public
class BCR { public static void main(String[] args) { for(int i = 1; i < 5; i++) { if(i == 3) continue; System.out.println("第" + i + "次迴圈:i = " + i); } } }

【結果】
在這裡插入圖片描述
i = 3時,執行第三次迴圈,遇到continue路過本次迴圈,開始執行下次迴圈。故,結果中沒有第三次迴圈。

4、帶標籤continue

public class BCR {
	public static void main(String[] args) {
		int i, j, k;
		for(i = 0; i < 2; i++) {
			System.out.println("外層迴圈:i = " + i + "*****************");
			loop:
			for(j = 0; j < 3; j++) {
				System.out.println("中層迴圈:j = " + j);
				for(k = 0; k < 10; k++) {
					System.out.println("內層迴圈:k = " + k);
					continue loop;
				}
			}
		}
	}
}

【結果】
在這裡插入圖片描述
【結果分析】
程式的流程在遇到continue之後,立即結束本次迴圈,跳到標籤所在迴圈層次中,進行下一輪迴圈。本例中,標籤在中層迴圈,遇到continue後,跳到中層迴圈處,開始執行下一輪的中層迴圈。
而在帶標籤的break迴圈中,跳到標籤後並不再執行剩餘的中層迴圈,而是直接開始執行下一次的外層迴圈。

型別 作用
不帶標籤continue 退回最內層迴圈的開關,並繼續執行
帶標籤continue 到達標籤位置,並重新進入緊接在那個標籤後面的迴圈
不帶標籤break 中斷並跳出當前迴圈
帶標籤break 中斷並跳出標籤所指的迴圈

5、return

將不帶標籤的break示例最內層的break換成return:

public class BCR {
	public static void main(String[] args) {
		int i, j;
		for(i = 1; i < 10; i++) {
			for(j = 1; j < 10; j++) {
				if(j%3 == 0)
					return;	
				System.out.println("內層迴圈:j = " + j);
			}
			System.out.println("迴圈中斷,跳出內層迴圈:j = " + j);
			if(i%3 == 0)
				break;	// 跳出外層迴圈
			System.out.println("*********i = " + i + "**********");
		}
		System.out.println("迴圈中斷,跳出內外迴圈:i = " + i);
	}
}

【結果】
在這裡插入圖片描述
return關鍵詞有兩方面的用途:一方面指定一個方法返回什麼值,另一方面它會導致當前方法退出,並返回那個值。
如果在返回void方法中沒有return語句,那麼在該方法的結尾處會有一個隱式的return,因此在方法中並非總是必須要有一個return語句。

public class BCR {
	public static int test(int a, int b) {
		if(a > b)
			return 1;	// 退出當前方法,並返回1
		else if(a < b)
			return -1;	// 退出當前方法,並返回-1
		else
			return 0;	// 退出當前方法,並返回0
	}
	public static void main(String[] args) {
		System.out.println(test(10, 5));
		System.out.println(test(5, 10));
		System.out.println(test(5, 5));
	}
}

【結果】
在這裡插入圖片描述