Java 在第一个循环中继续,在第二个循环中继续

Java 在第一个循环中继续,在第二个循环中继续,java,loops,keyword,Java,Loops,Keyword,这将帮助您更好地理解它: for(Object o : objects){//first loop for(int j = 0; i < y; j++){//second loop if(something_is_true) stop second loop , continue first loop } } 用于(对象o:objects){//第一个循环 对于(int j=0;i

这将帮助您更好地理解它:

for(Object o : objects){//first loop
    for(int j = 0; i < y; j++){//second loop

        if(something_is_true)
            stop second loop , continue first loop 

    }
}
用于(对象o:objects){//第一个循环
对于(int j=0;i

我应该使用continue关键字吗?

不。使用
break
。这将使您脱离内部循环,并继续使用外部循环

for(Object o : objects){//first loop
  for(int j = 0; i < y; j++){//second loop
    if(something_is_true) break;
  }
}
用于(对象o:objects){//第一个循环
对于(int j=0;i
否,请使用“break”

for(Object o : objects){//first loop
  for(int j = 0; i < y; j++){//second loop

    if(something_is_true)
       break;

  }
}
用于(对象o:objects){//第一个循环
对于(int j=0;i
如果您的目标是退出第二个循环并继续第一个循环,则只需调用break。无需继续(甚至不调用)。对于第二个循环,您可以使用“while”而不是“for”:

for(Object o : objects){//first loop
  int counter=0;
  while(!something_is_true && counter<y){//second loop
    counter++
    if(something happens)
      something_is_true=true;
 }
}
用于(对象o:objects){//第一个循环
int计数器=0;

虽然(!something__是真的&&counter我认为这是一个更好的方法:

for(Object o : objects)
{
     int j = 0
     while(j < y && something_is_true)
     {
       do_whatever;
       j++;
     }
}
for(对象o:对象)
{
int j=0
而(j
来自

您可以将
break
与外部循环的标签一起使用。例如:

public class Test {
  public static void main(String[] args) {
    outerloop:
    for (int i=0; i < 5; i++) {
      for (int j=0; j < 5; j++) {
        if (i * j > 6) {
          System.out.println("Breaking");
          break outerloop;
        }
        System.out.println(i + " " + j);
      }
    }
    System.out.println("Done");
  }
}

您还可以使用
标签

myLabel: for(Object o : objects){//first loop
    for(int j = 0; i < y; j++){//second loop

        if(something_is_true) {
            continue myLabel;
        }
    }
    //code that will be skipped if you continue to myLabel
    //but will not be skipped if you 'break' inside inner loop.
}
myLabel:for(对象o:objects){//第一个循环
对于(int j=0;i
您可以使用“while”"而不是for,而是if条件下的第二个loopadd break;语句。break始终仅将控制转移到当前循环。在您的情况下,如果在if块中放入break语句,则它将始终将您转移到第一个循环。添加标志不需要使用
while
;如果您有初始化、测试和增量
for
是正确的选择。这是另一种方法。@Spundun:习惯它。:-)人们投反对票,人们发表评论,他们通常不是同一个人。(事实上,从管理层和版主那里你能看到的最接近于指导的东西是,说出你为什么投反对票通常会对网站产生反作用。)如果你的答案被否决了,看一看,问为什么有人会这样做,如果你没有弄明白,别担心。(我看你的答案没有问题,FWIW。)@T.J.Crowder感谢您的支持并花时间回答:)要求从第二个循环继续第一个循环,而不是打断第二个循环的问题。这不应该是可接受的答案,或者应该重新制定问题。(如果第一个循环在第二个循环之后有一些说明,这很重要)。我同意@AW5,这不符合逻辑要求,会误导研究人员。我正在寻找与
continue 2
相当的版本,但似乎(在研究了一段时间后)javascript不提供这种控制。对于任何在此基础上进行页面管理的人来说,这个问题需要进行一些重复的页面整合。
myLabel: for(Object o : objects){//first loop
    for(int j = 0; i < y; j++){//second loop

        if(something_is_true) {
            continue myLabel;
        }
    }
    //code that will be skipped if you continue to myLabel
    //but will not be skipped if you 'break' inside inner loop.
}