iT邦幫忙

2

Java程式碼break&continue搭配label釋義。

初學JAVA看不太懂label,
下面分別是break跟continue設定back為跳出的位置。

public class TestBackLabel {
public static void main(String[] args) {

    back:{
    for(int i=0;i<10;i++){
       if(i==9){
        System.out.println("break");
        break back;
           }
        }
        System.out.println("test");
        
        }
    }
}     

輸出為break

如果i==9時印出break,並跳出定義的{}區塊
為什麼沒有至少印出9(i==0~8)次test呢?

另外
public class TestBackLabel {
public static void main(String[] args) {

        back1:
        for(int i = 0; i < 10; i++){
            back2:
            for(int j = 0; j < 10; j++) {
                if(j == 9) {
                    continue back2;
                }
            }
            System.out.println("test");
        }
    }
}       

輸出為
test
test
test
test
test
test
test
test
test
test

(改back1的話沒有輸出)

這我也看不懂了,請求版友釋義。感謝~

1 個回答

2
海綿寶寶
iT邦大神 1 級 ‧ 2020-05-26 07:45:13
最佳解答

參考這篇的說明

所以
你現在改學 java 不學 R 了嗎?
還是雙修?
超強的

看更多先前的回應...收起先前的回應...

上課輪著上,所以都要學。XD

果然厲害厲害

https://rx1226.pixnet.net/blog/post/326421177
我看完說明還是沒懂lable

第一段
如果i==9時印出break,並跳出定義的{}區塊
為什麼不是輸出
test
test
test
test
test
test
test
test
test
break

for迴圈不是i=1~8的過程都不用輸出嗎?

listennn08 iT邦研究生 2 級 ‧ 2020-05-26 10:55:49 檢舉

仔細看...

System.out.println("test");

有在迴圈裡面?

所以說程式碼要用括起來是有道理的
因為程式碼的縮排可以看清楚迴圈的範圍,如下
println("test");是寫在迴圈外面而不是裡面
所以i=0~9都不會輸出 test

public class TestBackLabel {
    public static void main(String[] args) {
        back: {
        
            for(int i=0;i<10;i++){
                if(i==9) {
                    System.out.println("break");
                    break back;
                }
            }
            
            System.out.println("test");
        }
    }
}     

我懂了,感謝回覆!

我要發表回答

立即登入回答