2017-01-11 3 views
0
public class Newfile{ 
    public static void main(String []args){ 
     for(int a=1; a < 5; a++){ 
      for(int b=1; b < 5; b++){ 
       if(a == b){ 
        System.out.println("pair found " + a + " " + b); 
        break; 
        } 
       } 
      } 
    } 
} 

Этот код просто разрывает внутренний цикл так, поэтому он ломает цикл с б но не петля, я делаю это упражнение.Перерыв 2 петли, если условие выполняется в Java

Мне было интересно, есть ли способ переломить BOTH-петли после того, как a == b удовлетворен?

+1

http://stackoverflow.com/questions/886955/breaking-out-of-nested-loops-in-java? rq = 1 это может помочь – Jerry06

ответ

1

Одним из альтернативных способов использования меток является назначение значений счетчикам циклов из всех задействованных циклов, чтобы оба условия цикла не срабатывали при попадании в определенное состояние или условие.

 for (int a=1; a < 5; a++) { 
      for (int b=1; b < 5; b++) { 
       if (a == b) { 
        System.out.println("pair found " + a + " " + b); 
        b = 5; 
        a = 5; 
       } 
      } 
     } 
+0

Использование меток уменьшает ваш код :) –

+0

@Tim Biegeleisen Спасибо. –

+0

Это определенно будет работать, но при выполнении условия вы потеряете значение 'a' и' b'. Это становится актуальным в тех случаях, когда вам нужно использовать эти значения 'a' или' b'. Например, в какой позиции '[i] [j]' в 2-мерном массиве значение отрицательное. –

1

Просто используйте флаг, чтобы вырваться из обеих петель:

boolean breakAll = false; // <<<< flag for breaking out 
for(int a=1; a < 5 && !breakAll; a++){ 
    for(int b=1; b < 5 && !breakAll; b++){ 
     if(a == b){ 
      System.out.println("pair found " + a + " " + b); 
      breakAll = true; 
     } 
    } 
} 
Смежные вопросы