2d массивы и для петель (APCSA)

Заявление о переходе

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

В следующем примере мы используем простой цикл для печати значений от 0 до 9:

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

Выход:

0
1
2
3
4
5
6
7
8
9

Теперь, если мы добавим оператор break при i == 4, наш код выйдет из цикла после того, как i будет равен 4. Вы можете использовать оператор break выходить из цикла for, а петли и циклы do-while. Оператор break выйдет из текущего цикла. Чтобы вырваться из внешнего цикла из вложенного внутреннего цикла, вам нужно будет использовать метки с инструкцией break.

for(int i=0; i<10; i++) {
  System.out.println(i);
  if(i==4) {
    break;
  }
}

Выход:

0
1
2
3
4

Продолжить заявление

Инструкция Java continue пропускает текущую итерацию цикла и переходит непосредственно к следующей итерации. После вызова инструкции continue в цикле for выполнение цикла будет выполнять значение шага и оценивать логическое условие перед продолжением следующей итерации. В следующем примере мы печатаем все значения от 0 до 9 в цикле, но мы пропускаем распечатку 4.

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

Выход:

0
1
2
3
5 <---- SKIPPED OVER 4 and continued with next loop iteration
6
7
8
9

Loop Обозначение ярлыка Вы можете использовать метки внутри вложенных циклов , указав, где вы хотите продолжить выполнение после выхода из внутреннего цикла. Обычно оператор break вырывается из самого внутреннего цикла, поэтому, когда вы хотите выйти из внешнего цикла, вы можете использовать метки для выполнения этого, по существу делая что-то похожее на инструкцию goto.

в следующем примере используются 3 петли, все вложенные друг в друга. Поскольку полностью не вырваться из внешнего цикла больше внутри внутреннего цикла, мы можем использовать метку «outer1», чтобы выполнить это, и указать метку рядом с оператором break.

outer1:
for(int i=0; i<5; i++) {
  for(int j=0; j<4; j++) {
    for(int k=0; k<2; k++) {
      System.out.println("[" + i + "][" + j + "][" + k + "]");
      if(j == 3) {
        break outer1;
      }
    }
  }
}

Выход:

[0][0][0]
[0][0][1]
[0][1][0]
[0][1][1]
[0][2][0]
[0][2][1]
[0][3][0]

Обратите внимание, как отображается последняя строка: « 0 [0]», где находится j == 3, и здесь мы называем «break outer1;»

Ярлыки цикла - Продолжить утверждение

Вы также можете использовать метки с ключевым словом continue, чтобы продолжить цикл из определенной точки. Взяв предыдущий пример и просто изменив одну строку, чтобы указать continue outer1; вместо break outer1;, цикл будет продолжать цикл с метки outer1 вместо выхода из цикла. Обратите внимание, как каждый раз вызывается continue outer1;, код продолжается из внешнего цикла после увеличения индекса цикла i на 1.

outer1:
for(int i=0; i<5; i++) {
  for(int j=0; j<4; j++) {
    for(int k=0; k<2; k++) {
      System.out.println("[" + i + "][" + j + "][" + k + "]");
      if(j == 3) {
        continue outer1;
    }
  }
}

[0][0][0]
[0][0][1]
[0][1][0]
[0][1][1]
[0][2][0]
[0][2][1]
[0][3][0] <---- CONTINUE WITH LABEL CALLED HERE
[1][0][0] <---- CONTINUES FROM NEXT ITERATION OF OUTER LOOP
[1][0][1]
[1][1][0]
[1][1][1]
[1][2][0]
[1][2][1]
[1][3][0] <---- CONTINUE WITH LABEL CALLED HERE
[2][0][0] <---- CONTINUES FROM NEXT ITERATION OF OUTER LOOP
[2][0][1]
[2][1][0]
[2][1][1]
[2][2][0]
[2][2][1]
[2][3][0] <---- CONTINUE WITH LABEL CALLED HERE
[3][0][0] <---- CONTINUES FROM NEXT ITERATION OF OUTER LOOP
[3][0][1]
[3][1][0]
[3][1][1]
[3][2][0]
[3][2][1]
[3][3][0] <---- CONTINUE WITH LABEL CALLED HERE
[4][0][0] <---- CONTINUES FROM NEXT ITERATION OF OUTER LOOP
[4][0][1]
[4][1][0]
[4][1][1]
[4][2][0]
[4][2][1]
[4][3][0]

Источник: Циклы в Java - Руководство по Ultimate

0
задан Chandrani Chatterjee 17 January 2019 в 05:04
поделиться