Что такое ключевое слово "continue" и как оно работает в Java?


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

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

10 ответов:

A continue оператор без метки будет повторно выполняться из условия The innermost while или do цикл, и из выражения обновления самого внутреннего 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 to имитировать ограниченную форму 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 объявление цикла не сразу видно. То же самое верно и для return в середине метода, но по несколько иной причине.

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

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

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

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

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

необходимо подчеркнуть, что в случае do - while вы перемещаетесь в состояние внизу после a 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%... ты ошибаешься!

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

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

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

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

рассмотрим условие 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 (после if.), это будет просто печать aa и из цикла.

если условие "bb" равно ss выполняется: Для продолжения: он переходит к следующей итерации, т. е. "cc".равно (ss). Для перерыва: он выходит из цикла и печатает "из цикла. "

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

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

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

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

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

while (...)
{ }

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

while (...)
    ;

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

как и когда он используется в Java, см. ссылку ниже. Он получил объяснение с примером.

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

надеюсь, что это помогает !!