Java 循環中標簽的作用


歡迎探討,如有錯誤敬請指正

如需轉載,請注明出處http://www.cnblogs.com/nullzx/

 

    continue和break可以改變循環的執行流程,但在多重循環中,這兩條語句無法直接從內層循環跳轉到外層循環。在C語言中,可以通過goto語句實現多重循環的跳轉,但在非循環結構中使用goto語句會使程序的結構紊亂,可讀性變差。因此Java就發明了一種帶標簽的continue和break語句,實際上它是一種帶限制的專門用於循環的goto語句。

    通常情況下我們使用的continue(或break)語句不帶標簽,這時也就是默認在當前的循環中執行continue(或break)語句。帶標簽的循環實際上就是給這個循環起了個名字,當使用“continue(或break)+標簽”語句時實際上就是在標簽所在的循環執行continue(或break)語句。

        現在我們用三個例子來說明帶標簽的循環。

1. 不帶標簽的二重循環

package javaleanning;

public class LableTest {
	public static void main(String[] args) {
		for(int i = 0; i < 10; i++){
			for(int j = 0; j < 10; j++){
				System.out.print("("+i+","+j+") ");
			}
			System.out.println();
		}
	}
}

運行結果

(0,0) (0,1) (0,2) (0,3) (0,4) (0,5) (0,6) (0,7) (0,8) (0,9)

(1,0) (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) (1,7) (1,8) (1,9)

(2,0) (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) (2,7) (2,8) (2,9)

(3,0) (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) (3,7) (3,8) (3,9)

(4,0) (4,1) (4,2) (4,3) (4,4) (4,5) (4,6) (4,7) (4,8) (4,9)

(5,0) (5,1) (5,2) (5,3) (5,4) (5,5) (5,6) (5,7) (5,8) (5,9)

(6,0) (6,1) (6,2) (6,3) (6,4) (6,5) (6,6) (6,7) (6,8) (6,9)

(7,0) (7,1) (7,2) (7,3) (7,4) (7,5) (7,6) (7,7) (7,8) (7,9)

(8,0) (8,1) (8,2) (8,3) (8,4) (8,5) (8,6) (8,7) (8,8) (8,9)

(9,0) (9,1) (9,2) (9,3) (9,4) (9,5) (9,6) (9,7) (9,8) (9,9)

2. 帶標簽的二重循環,“break+標簽”語句

       在這個例子中是個二重for循環,我們給外層循起始處加了標簽(也就是說給外層循環起了個名字)“outerCycle”,在內層循環使用“break outerCycle”時,就相當於在outerCycle這個循環中直接使用break語句。

package javaleanning;

public class LableTest {
	public static void main(String[] args) {
		outerCycle:
		for(int i = 0; i < 10; i++){
			for(int j = 0; j < 10; j++){
				if(j == 5){
					break outerCycle;
				}
				System.out.print("("+i+","+j+") ");
			}
			System.out.println();
		}
	}
}

運行結果

(0,0) (0,1) (0,2) (0,3) (0,4)

3. 帶標簽的二重循環,“continue+標簽”語句

        在這個例子中是個二重for循環,我們給外層循起始處加了標簽(也就是說給外層循環起了個名字)“outerCycle”,在內層循環使用“continue outerCycle”時,就相當於在outerCycle這個循環中直接使用continue語句。

 

package javaleanning;

public class LableTest {
	public static void main(String[] args) {
		outerCycle:
		for(int i = 0; i < 10; i++){
			for(int j = 0; j < 10; j++){
				if(j == 5){
					continue outerCycle;
				}
				System.out.print("("+i+","+j+") ");
			}
			System.out.println();
		}
	}
}

運行結果

(0,0) (0,1) (0,2) (0,3) (0,4) (1,0) (1,1) (1,2) (1,3) (1,4) (2,0) (2,1) (2,2) (2,3) (2,4) (3,0) (3,1) (3,2) (3,3) (3,4) (4,0) (4,1) (4,2) (4,3) (4,4) (5,0) (5,1) (5,2) (5,3) (5,4) (6,0) (6,1) (6,2) (6,3) (6,4) (7,0) (7,1) (7,2) (7,3) (7,4) (8,0) (8,1) (8,2) (8,3) (8,4) (9,0) (9,1) (9,2) (9,3) (9,4)

       注意:實際運行結果全部在一行顯示(即沒有執行換行語句),現在這樣的顯示結果僅僅是出於排版的原因


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM