在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;
...
}
是否可以使用label然后跳出内部循环并继续而不使用布尔变量contains
?
我需要打破 - 继续而不是从所有循环中断。
答案 0 :(得分: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;
}
}
}
答案 1 :(得分: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;
...
}