【问题标题】:java break loop not working [closed]java中断循环不起作用[关闭]
【发布时间】:2014-12-24 09:28:25
【问题描述】:

我的 java 代码中有一个 break 标签,但是当我转到代码中的 break 语句时它没有跳转到标签:

  OUTERMOST:for(String s :soso){

        if(wasBreaked){
              //code never enters this loop
                Log.e("","WASBREAK = FALSE");
                wasBreaked = false;
        }

        if(true){
                Log.e("","WASBREAK = TRUE GOING TO OUTERMOST");
                wasBreaked = true;
                break OUTERMOST;
        }
  }

【问题讨论】:

标签: java android breakpoints


【解决方案1】:

Break 语句实际上并不是像 C 等其他编程语言中那样的 goto 语句。

您的代码所做的是从带有标签 OUTERMOST 的循环中中断。我原以为你需要continue OUTERMOST; 而不是休息。但对我来说,这真的没有意义,因为你没有进一步的声明后继续(现在中断你的代码),不管你是否明确地说继续,它都会继续。

【讨论】:

  • 只需用 continue 替换 break 就可以了
【解决方案2】:
public class Test {

   public static void main(String[] args) {

    String soso[]={"1","2"};
    boolean wasBreaked=false;
    OUTERMOST:for(String s :soso){

        if(wasBreaked){
                Log.e("","WASBREAK = FALSE");
                wasBreaked = false;
        }

        if(true){
                Log.e("","WASBREAK = TRUE GOING TO OUTERMOST");
                wasBreaked = true;
                System.out.println("before break");

                break OUTERMOST;//use continue in place of break here for going to label
                }
        System.out.println("Inside outermost loop");
}
    System.out.println("outside outermost loop");

}

}

我试过了,它有效 它给出了输出

   before break
   outside outermost loop

要返回标签,您应该在代码中使用 continue 关键字而不是 break。使用 continue 后输出会是这样的

 before break
 before break
 outside outermost loop

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多