1

在Java中,我有这样的代码:

boolean contains;
for (int i = 0; i < n; i++) {
    // get the current matrix value
    t = A[i][j];

    // check if it has been already considered
    contains = false;
    for (int z = 0; z < l; z++) {
        if (arrays[z].contains(t)) {
            contains = true; break;
        }
    }
    if (contains) continue;
    ...
}

是否可以使用标签然后跳出内部循环并在没有布尔变量的情况下继续contains

我需要做中断继续而不是从所有循环中中断。

4

2 回答 2

4
outerLoop:
for (int i = 0; i < n; i++) {
    // get the current matrix value
    t = A[[i]][j];
    // check if it has been already considered
    for (int z = 0; z < l; z++) {
        if (arrays[z].contains(t)) {
            continue outerLoop;
        }
    }
}

Oracle 关于标记分支的文档

于 2012-09-26T09:01:20.880 回答
3

使用 labes 会导致意大利面条式代码使您的代码可读性降低。

您可以在其自己的返回布尔值的方法中提取内部 for 循环:

private boolean contains(/* params */) {
    for (int z = 0; z < l; z++) {
        if (arrays[z].contains(t)) {
            return true;
        }
    }
}

并在外部for循环中使用它

for (int i = 0; i < n; i++) {
    // get the current matrix value
    t = A[[i]][j];

    // check if it has been already considered
    if (contains(/*params*/)) 
        continue;
    ...
}
于 2012-09-26T09:05:36.760 回答