Каково ключевое слово «продолжить» и как оно работает на Java?


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

  • Что такое ключевое слово continue ?
  • Как это работает?
  • Когда он используется?


Answers


Оператор continue без метки будет повторно выполняться из условия самого внутреннего цикла while или do и из выражения update самого внутреннего for цикла. Он часто используется для раннего завершения обработки цикла и, тем самым, для избежания глубоко вложенных операторов if . В следующем примере continue будет получать следующую строку, не обрабатывая следующий оператор в цикле.

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

С помощью метки continue будет выполняться из цикла с соответствующей меткой, а не самой внутренней петлей. Это можно использовать для выхода из глубоко вложенных циклов или просто для ясности.

Иногда continue также используется в качестве заполнителя для того, чтобы сделать пустой элемент цикла более понятным.

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

Тот же оператор без метки также существует в C и C ++. Следующий эквивалент Perl next .

Этот тип потока управления не рекомендуется, но если вы так решите, вы также можете использовать continue для моделирования ограниченной формы goto . В следующем примере continue будет перезапускать пустой цикл for (;;) .

aLoopName: for (;;) {
  // ...
  while (someCondition)
  // ...
    if (otherCondition)
      continue aLoopName;



continue вроде как goto . Вы знакомы с break ? Легче об этом думать:

  • break завершает цикл (переходит к коду под ним).

  • continue завершает оставшуюся часть обработки кода внутри цикла для текущей итерации, но продолжает цикл.




Давайте посмотрим пример

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

Это получило бы сумму только нечетных чисел от 1 до 100




Если вы думаете о теле цикла как подпрограмме, continue вроде как return . Одно и то же ключевое слово существует в C и служит той же цели. Вот надуманный пример:

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

Это выведет только нечетные числа.




Как правило, я вижу continuebreak ) в качестве предупреждения о том, что код может использовать некоторый рефакторинг, особенно если объявление while или for loop не сразу видно. То же самое верно для return в середине метода, но по несколько иной причине.

Как уже говорили другие, continue движение к следующей итерации цикла, а break выходит из замкнутого контура.

Это могут быть временные интервалы обслуживания, потому что нет прямой связи между continue / break и циклом, который он продолжает / прерывает, кроме контекста; добавьте внутренний цикл или переместите «кишки» цикла в отдельный метод, и у вас есть скрытый эффект провала continue / break .

IMHO, лучше использовать их в качестве крайней меры, а затем, чтобы убедиться, что их использование сгруппировано вместе в начале или в конце цикла, чтобы следующий разработчик мог видеть «границы» цикла на одном экране ,

continue , break и return (кроме True True Return в конце вашего метода), попадают в общую категорию «скрытых GOTO». Они размещают петлю и функцию управления в неожиданных местах, что в конечном итоге вызывает ошибки.




Как уже упоминалось, continue будет пропустить обработку кода ниже него и до конца цикла. Затем вы перемещаетесь в состояние цикла и запускаете следующую итерацию, если это условие все еще выполняется (или если есть флаг, в состояние обозначенного цикла).

Следует подчеркнуть, что в случае do - while переходе в состояние внизу после continue , а не в начале цикла.

Вот почему многие люди не могут правильно ответить на то, что будет генерировать следующий код.

    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);

* Если ваш ответ заключается в том, что aSet будет содержать нечетные числа всего на 100% ... вы ошибаетесь!




Рассмотрим условие If Else. Оператор continue выполняет то, что есть в состоянии и выходит из условия, т.е. переходит к следующей итерации или условию. Но перерыв оставляет петлю. Рассмотрим следующую программу. '

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.");
    }

}

Он будет печатать: aa cc Из цикла.

Если вы используете break вместо continue (After if.), Он просто распечатает aa и выйдет из цикла .

Если условие «bb» равно ss, выполняется: For Continue: оно переходит к следующей итерации, т.е. «cc» .equals (ss). For Break: он выходит из цикла и печатает «Out of the loop».




«continue» в Java означает перейти к концу текущего цикла, означает: если компилятор увидит продолжение в цикле, он перейдет к следующей итерации

Пример: это код для печати нечетных чисел от 1 до 10

компилятор будет игнорировать код печати всякий раз, когда видит, что он продолжает перемещаться в следующую итерацию

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



Я немного опаздываю на вечеринку, но ...

Стоит отметить, что continue полезно для пустых циклов, где вся работа выполняется в условном выражении, управляющем циклом. Например:

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

В этом случае вся работа по чтению символа и добавлению его в buffer выполняется в выражении, управляющем циклом while. Оператор continue служит визуальным индикатором того, что петле не требуется тело.

Это немного более очевидно, чем эквивалент:

while (...)
{ }

и, безусловно, лучше (и более безопасный) стиль кодирования, чем использование пустой инструкции типа:

while (...)
    ;



В основном в java, continue - это утверждение. Поэтому оператор continue обычно используется с циклами для пропуска текущей итерации.

Для того, как и когда он используется в java, обратитесь к ссылке ниже. У этого есть объяснение с примером.

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

Надеюсь, поможет !!