Java 我们怎样才能从4个内循环出去?
嗨 我是java初学者,我的程序有4个for循环: 我的程序是这样工作的,如果Java 我们怎样才能从4个内循环出去?,java,for-loop,label,break,labelled-break,Java,For Loop,Label,Break,Labelled Break,嗨 我是java初学者,我的程序有4个for循环: 我的程序是这样工作的,如果b是true,元素将从点列表中删除,n将是n--,我想从所有for循环中退出,然后从第一个for循环中再次出现,因此l将是l++,我该怎么做?用break语句 for (int l = 0; l < n; l++) { for (int i = 1; i < (n - 2); i++) { for (int j = i + 1; j < (n - 1); j++) {
b
是true
,元素将从点列表中删除,n
将是n--
,我想从所有for循环中退出,然后从第一个for循环中再次出现,因此l
将是l++
,我该怎么做?用break语句
for (int l = 0; l < n; l++) {
for (int i = 1; i < (n - 2); i++) {
for (int j = i + 1; j < (n - 1); j++) {
for (int k = j + 1; k < n; k++) {
if (l != i && l != j && l != k) {
boolean b = isOK(pointList.get(l), pointList.get(i), pointList.get(j), pointList.get(k));
System.out.println(b);
if (b == true) {
pointList.remove(pointList.get(l);
n--;
break;
}
else
System.out.println(b);
}
}
}
}
}
for(int l=0;l
查看标记的break语句
例如,此处:您可以将标记的中断用作:
for (int l = 0; l < n; l++) {
foo: for (int i = 1; i < (n - 2); i++) {
for (int j = i + 1; j < (n - 1); j++) {
for (int k = j + 1; k < n; k++) {
if (l != i && l != j && l != k) {
boolean b = isOK(pointList.get(l), pointList.get(i), pointList.get(j), pointList.get(k));
System.out.println(b);
if (b == true) {
pointList.remove(pointList.get(l);
n--;
break foo;
}
else
System.out.println(b);
}
}
}
}
}
for(int l=0;l
第一个“快速且肮脏”的解决方案是使用stay\u into\u循环
变量,并修改循环的,如:
boolean stay_into_loops = true
// here goes the first for loop
for (int i = 1; i < (n - 2) && stay_into_loops ; i++) {
for (int j = i + 1; j < (n - 1) && stay_into_loops ; j++) {
for (int k = j + 1; k < n && stay_into_loops ; k++) {
if (l != i && l != j && l != k) {
boolean b = isOK(pointList.get(l), `pointList.get(i), pointList.get(j), pointList.get(k));`
System.out.println(b);
if (b == true) {
pointList.remove(pointList.get(l);
n--;
stay_into_loops = false;
break;
boolean stay\u into\u loops=true
//这是第一个for循环
对于(int i=1;i<(n-2)和&stay_-in_循环;i++){
对于(int j=i+1;j<(n-1)和&stay_-in_循环;j++){
for(int k=j+1;k
但是,当遇到这样的事情时,通常是代码的气味。考虑重构代码,因为在某个时候它会升级成一个混乱。
在循环中,<代码>中断>代码>语句终止内部循环,而<代码>继续<代码>跳转到下一个迭代。t循环到您需要使用的内部循环。类似这样的方法应该可以工作:
outerloop:
for (int l = 0; l < n; l++) {
for (int i = 1; i < (n - 2); i++) {
for (int j = i + 1; j < (n - 1); j++) {
for (int k = j + 1; k < n; k++) {
if (l != i && l != j && l != k) {
boolean b = isOK(pointList.get(l), pointList.get(i), pointList.get(j), pointList.get(k));
System.out.println(b);
if (b == true) {
pointList.remove(pointList.get(l);
n--;
continue outerloop;
}
else
System.out.println(b);
}
}
}
}
}
outerloop:
对于(int l=0;l
使用带标签的循环
for (int l = 0; l < n; l++) {
loopa:
for (int i = 1; i < (n - 2); i++) {
for (int j = i + 1; j < (n - 1); j++) {
for (int k = j + 1; k < n; k++) {
if (l != i && l != j && l != k) {
boolean b = isOK(pointList.get(l), pointList.get(i), pointList.get(j), pointList.get(k));
System.out.println(b);
if (b == true) {
pointList.remove(pointList.get(l);
n--;
break loopa;
}
else
System.out.println(b);
}
}
}
}
}
for(int l=0;l
然后从标记的循环中断在每个内部for循环中为自己创建一个出口。
for (int l = 0; l < n; l++) {
loopa:
for (int i = 1; i < (n - 2); i++) {
for (int j = i + 1; j < (n - 1); j++) {
for (int k = j + 1; k < n; k++) {
if (l != i && l != j && l != k) {
boolean b = isOK(pointList.get(l), pointList.get(i), pointList.get(j), pointList.get(k));
System.out.println(b);
if (b == true) {
pointList.remove(pointList.get(l);
n--;
break loopa;
}
else
System.out.println(b);
}
}
}
}
}
这里有一个快速无痛的解决方案
bool breakout;
for (int l = 0; l < n; l++)
{
breakout = false;
for (int i = 1; i < (n - 2) && !breakout; i++)
for (int j = i + 1; j < (n - 1) && !breakout; j++)
for (int k = j + 1; k < n && !breakout; k++)
{
if(b == true)
breakout = true;
}
}
bool突破;
对于(int l=0;l
因此,您可以看到breakout
布尔值是每个内部循环的票证,因为它在每个声明中都会被检查。
每次
的第一个迭代时,它都会被重置。再次:
again:
for (int l = 0; l < n; l++) {
for (int i = 1; i < (n - 2); i++) {
for (int j = i + 1; j < (n - 1); j++) {
for (int k = j + 1; k < n; k++) {
if (l != i && l != j && l != k) {
boolean b = isOK(pointList.get(l), pointList.get(i), pointList.get(j), pointList.get(k));
System.out.println(b);
if (b == true) {
pointList.remove(pointList.get(l);
n--;
break again;
}
else
System.out.println(b);
}
}
}
}
}
对于(int l=0;l