带有break / continue的循环/标签

时间:2015-03-09 22:59:41

标签: java

除了这种编码风格的优点外,我还有以下代码:

public static void main(String argvs[]) {

    int i, j;
    Point_1: for (i = 1; i <= 10; i++) {
        for (j = 1; j <= 10; j++) {
            System.out.print(j);
            if (j == 5)
                continue Point_1;
        }
        System.out.println();
    }
}

使用continue Point_1;,输出为:12345123451234512345123451234512345123451234512345

但是break Point_1;,输出为: 12345

发生了什么事?换句话说,continue label;break label;之间有什么区别?

2 个答案:

答案 0 :(得分:3)

breakcontinue之间的差异相同。

continue Point_1;表示“跳到标记为Point_1的循环的下一次迭代的开始。”

break Point_1;表示“突破标记为Point_1”的循环。

以下是他们将如何转换为goto语句:

int i, j;
Point_1:
for (i = 1; i <= 10; i++) {
    for (j = 1; j <= 10; j++) {
        System.out.print(j);
        if (j == 5) {
            // break Point_1; --> goto Break_Label;
            // continue Point_1; --> goto Continue_Label;
        }
    }
    System.out.println();
    Continue_Label:
}
Break_Label:

答案 1 :(得分:1)

对, 您j==5时要求java重新开始。

  

if(j==5) Continue Point_1

这意味着:检查j==5是否为真Continue Point_1

Continue Point_1表示:转到第二个i并再次开始计算j,当j再次j==5时,它会开始第三个i j 1}}将i计为5并重复j==5次)(在这种情况下为10次,这就是为什么你会得到12345次)。

它的缺点是它要求java在{{1}}

时停止