在不使用break语句的情况下中断嵌套for循环

时间:2014-02-26 08:45:55

标签: java nested-loops

我想使用break语句打破嵌套for循环而不使用。原因是我在程序中稍后使用break语句时遇到问题。

源代码是:

for (int i = 0; i < 100; i++){
    for (int j = 10; j < 100; j++) {
        code;
        if (code == true) {
            :break out here:
        }
    }
}

8 个答案:

答案 0 :(得分:1)

这是goto声明不会很糟糕的少数情况之一。更好的是,将循环提取到另一个方法并使用return语句,如@S R SH所述。

答案 1 :(得分:1)

尝试这样做,非常简单。

boolean flag = true;
for (int i = 0; i < 100; i++){
    for (int j = 10; j < 100; j++) {
        code;
        if (code == true) {
            j = 101; //any value that would make the condition check in for loop false
            flag = false;
        }
     }
     if (flag==false) {
         i = 101;   //any value that would make the condition check in for loop false
     }
}

答案 2 :(得分:1)

另一种可能性是使用布尔标志,该标志被添加到for循环中的条件。

boolean breakOut = false;
for (int i = 0; i < 100 && !breakOut; i++) {
    for (int j = 10; j < 100 && !breakOut; j++) {
        code;
        if (code == true) {
            breakOut = true;
        }
    }
}

答案 3 :(得分:0)

for(int i = 0; i < 100; i++){
  for (int j = 10; j < 100; j++) {
      //code;
      if(code == true){
         j = 100; //will cancel the inner for loop.
      }
  }
}

答案 4 :(得分:0)

根据你要打破的循环使i和/或j超过100

答案 5 :(得分:0)

在此更改。

    public void firstFor(int index){
      for(int i =index; i<100;i++){
      secondFor();
      }
  }
    public void secondFor(){
      for(int j=0;j<100;j++){
    //your code...
       if(code==true) return;

      }
  }

答案 6 :(得分:0)

将代码块放在单独的方法中并使用return。这将是最干净的方法。

答案 7 :(得分:0)

您可以使用标签:

  firstLabel: for (int i = 0; i < 100; i++) {
            secondLabel: for (int j = 10; j < 100; j++) {
                System.out.println("J = " + j);
                if (j == 50) {
                    break firstLabel;
                }
            }
        }