2015-09-12 3 views
1

Я искал способ, чтобы перезапустить вложенный цикл в Java основном это то, что я имею в виду:способ перезапустить двойную петлю в Java

for(int i = 0; i < value; i++) { 
    for(int j = 0;j < value2;j++) { 
    if(condition) { 
     i=-1; 
     break; 
    } 
    //some code here 
    } 
    } 

Но, может быть, вы можете предложить что-то лучше?

+0

Используйте функцию и рестарт столько раз, сколько вы хотите. –

+0

Это выглядит достаточно просто. Вы можете использовать ярлык, но это сложнее. –

ответ

0

вы можете использовать метки меток.

OUTER: for(int i = 0; i < value; i++) { 
      for(int j = 0;j < value2;j++) { 
      if(condition) { 
       continue OUTER; 
       } 
      //some code here 
     } 
     } 
+0

Это не перезапускает цикл, то есть с 'i == 0' –

+0

Добавьте' i = -1' перед 'continue', и это будет правильно. – serhii

0

Попробуйте это:

private void ExampleLoop(boolean isStarted) 
{ 
    while(isStarted) 
    { 
     if(condition) 
     { 
      isStarted = false; 
     } 
    } 
} 

Затем в основной:

MyClass myClass = new MyClass(); 
myClass.ExampleLoop(true); 
//Or stop with: 
myClass.ExampleLoop(false); 
0

функции лямбда?

class Ideone 
{ 

    static Runnable r; 
    static boolean brokeOnce = false; 


    public static void main (String[] args) 
    { 
     r =() -> { 
      firstloop: for (int i = 0; i <= 2; i++) { 
       for (int j = 0; j <= 2; j++) { 
       System.out.println(i + " " + j); 
       if (!brokeOnce && i == 1 && j == 1) { 
        brokeOnce = true; 
        r.run(); 
        break firstloop; 
       } 
       } 
      } 
     }; 

     r.run(); 
    } 
} 

Ideone ссылка: http://ideone.com/EqPEJ6

+0

Слишком просто. Мне кажется, нам нужен более сложный пример использования 'for()'. – serhii

+0

Вы правы. Я должен использовать больше интерфейсов и абстрактных классов, а также собственное расширение Runnable. :) –

Смежные вопросы