Przerwanie zewnętrznej pętli

0

Praktycznie cały mój program wykonuje się w pętli while, chcę jednak dodać do niego zakończenie awaryjne w postaci warunku if. Jeśli użyję instrukcji break wewnątrz if'a to przerywany jest tylko ten if a while dalej się wykonuje. W jaki sposób mogę przerwać zewnętrzną pętle while z poziomu tego ifa ?

0
jigsaw71 napisał(a):

Jeśli użyję instrukcji break wewnątrz if'a to przerywany jest tylko ten if a while dalej się wykonuje.

Tylko Ci się tak wydaje. Pokaż kod.

1

Możesz użyć etykiety:

main_loop:
while (...) {
  ...
  if (finish) {
    break main_loop;
  }
  ...
}

https://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.15

0

Dzięki yarel, podziałało :)

2

Jedyna sytuacja kiedy coś takiego ma sens, to przerywanie wielu zagnieżdżonych pętli. Ale poza szczególnymi sytuacjami należy po prostu... nie mieć takich pętli! Jeśli masz tylko jeden poziom zagłębienia (lub dwa na zasadzie pętla+if) to problem znika.

0

Można by też normalniej tj. pętlę dać w funkcji i zrobić return.

public void calculate(){
while(...){
    while(...){
         if(...){
            return
        }
    }
}
}

public static void main(String[] args){
    calculate()
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1