Co to jest słowo kluczowe" continue " i jak to działa w Javie?

Zobaczyłem to słowo kluczowe po raz pierwszy i zastanawiałem się, czy ktoś mógłby mi wyjaśnić, co to robi.

  • Co to jest continue słowo kluczowe?
  • Jak to działa?
  • Kiedy jest używany?
Author: Francesco Menzani, 2008-12-23

10 answers

Instrukcja continue bez etykiety zostanie ponownie uruchomiona z warunku pętli wewnętrznej while lub do oraz z wyrażenia update pętli wewnętrznej for. Jest często używany do wczesnego zakończenia przetwarzania pętli i unikania głęboko zagnieżdżonych instrukcji if. W poniższym przykładzie continue otrzyma następny wiersz, bez przetwarzania następującej instrukcji w pętli.

while (getNext(line)) {
  if (line.isEmpty() || line.isComment())
    continue;
  // More code here
}

Z etykietą, continue ponownie uruchomi się z pętli z odpowiednią etykietą, a nie najgłębszą pętlę. Może to być używane do ucieczki głęboko zagnieżdżonych pętli lub po prostu dla jasności.

Czasami continue jest również używany jako symbol zastępczy, aby uczynić ciało pustej pętli bardziej przejrzystym.

for (count = 0; foo.moreData(); count++)
  continue;

Ta sama instrukcja bez etykiety istnieje również w C i C++. Odpowiednikiem w Perlu jest next.

Ten rodzaj przepływu sterowania nie jest zalecany, ale jeśli tak zdecydujesz, możesz również użyć continue do symulacji ograniczonej formy goto. W poniższym przykładzie continue ponownie uruchomi pustą pętlę for (;;).

aLoopName: for (;;) {
  // ...
  while (someCondition)
  // ...
    if (otherCondition)
      continue aLoopName;
 388
Author: Diomidis Spinellis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-18 15:44:51

continue jest jak goto. Czy znasz break? Łatwiej jest myśleć o nich w kontraście:

  • break kończy pętlę (przeskakuje do kodu pod nią).

  • continue kończy resztę przetwarzania kodu w pętli dla bieżącej iteracji, ale kontynuuje pętlę.

 476
Author: Dustin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-10 15:35:10

Zobaczmy przykład:

int sum = 0;
for(int i = 1; i <= 100 ; i++){
    if(i % 2 == 0)
         continue;
    sum += i;
}

Otrzymałoby to sumę tylko liczb nieparzystych od 1 do 100.

 90
Author: Gant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-15 04:34:31

Jeśli myślisz o ciele pętli jako podprogramie, continue jest czymś w rodzaju return. To samo słowo kluczowe istnieje w języku C i służy temu samemu celowi. Oto wymyślony przykład:

for(int i=0; i < 10; ++i) {
  if (i % 2 == 0) {
    continue;
  }
  System.out.println(i);
}

To wydrukuje tylko liczby nieparzyste.

 26
Author: Vineet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-18 15:14:59

Ogólnie postrzegam continue (i break) jako ostrzeżenie, że kod Może użyć refaktoryzacji, zwłaszcza jeśli deklaracja pętli while lub for nie jest natychmiast widoczna. To samo dotyczy return w środku metody, ale z nieco innego powodu.

Jak już powiedzieli inni, continue przechodzi do następnej iteracji pętli, podczas gdy break wychodzi z otaczającej pętli.

Mogą to być timebomby konserwacyjne, ponieważ nie ma natychmiastowego związek między continue/break a pętla jest kontynuowana / łamana poza kontekstem; dodaj pętlę wewnętrzną lub przenieś "flaki" pętli do osobnej metody i masz ukryty efekt continue/break porażka.

IMHO, najlepiej użyć ich jako środka ostateczności, a następnie upewnić się, że ich użycie jest zgrupowane ściśle na początku lub końcu pętli, aby następny programista mógł zobaczyć "granice" pętli na jednym ekranie.

continue, break, i return (inne niż jeden prawdziwy zwrot na końcu metody) wszystkie należą do ogólnej kategorii "hidden GOTOs". Umieszczają pętle i sterowanie funkcjami w nieoczekiwanych miejscach, co ostatecznie powoduje błędy.

 17
Author: Tom Dibble,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-18 15:17:03

Jak już wspomniano continue pominie przetwarzanie kodu pod nim i do końca pętli. Następnie przechodzimy do warunku pętli i uruchamiamy następną iterację, jeśli ten warunek nadal obowiązuje (lub jeśli istnieje znacznik, do warunku pętli).

Należy podkreślić, że w przypadku do - while jesteś przeniesiony do warunku na dole po continue, a nie na początku pętli.

Dlatego wiele osób nie odpowiada poprawnie na to, co wygeneruje się następujący kod.

    Random r = new Random();
    Set<Integer> aSet= new HashSet<Integer>();
    int anInt;
    do {
        anInt = r.nextInt(10);
        if (anInt % 2 == 0)
            continue;
        System.out.println(anInt);
    } while (aSet.add(anInt));
    System.out.println(aSet);

*Jeśli Twoja odpowiedź jest taka, że aSet będzie zawierać liczby nieparzyste tylko 100%... mylisz się!

 4
Author: Konstantinos Chalkias,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-10 13:49:38

"continue" w języku Java oznacza przejście do końca bieżącej pętli, oznacza: jeśli kompilator widzi continue w pętli, przejdzie do następnej iteracji

Przykład: jest to kod do drukowania nieparzystych liczb od 1 do 10

Kompilator zignoruje kod wydruku, gdy zobaczy kontynuację przechodzenia do następnej iteracji

for (int i = 0; i < 10; i++) { 
    if (i%2 == 0) continue;    
    System.out.println(i+"");
}

 4
Author: Ibrahim Hout,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-19 15:08:33

Rozważmy warunek If Else. Instrukcja continue wykonuje to, co znajduje się w warunku i wychodzi z warunku, tzn. przeskakuje do następnej iteracji lub warunku. Ale przerwa opuszcza pętlę. Rozważ następujący Program. '

public class ContinueBreak {
    public static void main(String[] args) {
        String[] table={"aa","bb","cc","dd"};
        for(String ss:table){
            if("bb".equals(ss)){
                continue;
            }
            System.out.println(ss);
            if("cc".equals(ss)){
                break;
            }
        }
        System.out.println("Out of the loop.");
    }

}

Wyświetli: aa cc poza pętlą.

Jeśli użyjesz break zamiast continue (po if.), po prostu wyświetli aa i z pętli.

Jeśli warunek" bb " równy ss jest spełniony: For Continue: it goes to next iteracja tj. "cc".equals (ss). Do przerwy: wychodzi z pętli i wypisuje "z pętli. "

 3
Author: phanindravarma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-29 16:18:01

jestem trochę spóźniona na imprezę, ale...

Warto wspomnieć, że continue jest przydatna dla pustych pętli, gdzie cała praca jest wykonywana w wyrażeniu warunkowym kontrolującym pętlę. Na przykład:

while ((buffer[i++] = readChar()) >= 0)
    continue;

W tym przypadku cała praca czytania znaku i dodawania go do buffer jest wykonywana w wyrażeniu kontrolującym pętlę while. Instrukcja continue służy jako wizualny wskaźnik, że pętla nie potrzebuje ciała.

To trochę bardziej oczywiste. niż odpowiednik:
while (...)
{ }

I zdecydowanie lepszy (i bezpieczniejszy) styl kodowania niż użycie pustej instrukcji w stylu:

while (...)
    ;
 2
Author: David R Tribble,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-21 23:38:41

Zasadniczo w Javie, continue jest instrukcją. Instrukcja continue jest zwykle używana z pętlami do pominięcia bieżącej iteracji.

Aby dowiedzieć się, jak i kiedy jest on używany w Javie, zapoznaj się z poniższym linkiem. Ma Wyjaśnienie z przykładem.

Http://www.flowerbrackets.com/continue-java-example/

Mam nadzieję, że to pomoże !!

 1
Author: Shiva,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-22 13:38:47