Аналог for else в java

Работаю с пайтоном, но возникла необходимость написать на джава. В пайтоне есть возможность использовать блок кода else после циклов, после успешного выполнения цикла

for i in range(0,10):
    # код цикла
else:
    # код после успешного выполнения цикла

Есть ли в джава реализация такого же алгоритма, без введения дополнительной булевой переменной? То есть если в цикле был вызван break, то код выполнять не нужно


Ответы (3 шт):

Автор решения: Aziz Umarov

Оператора такого нет, но можно написать такое. Без дополнительной переменной

for (int i = 0; i < 10; i++) {
  // # код цикла

  if (!((i+1) < 10)) {
    // # код после успешного выполнения цикла
  }
}

Написал (i+1) для того чтобы вычислить следующий член итерации. Можно конечно проверить на i == 9 в данном случае. Но в общем с вещественными конечно нужно быть аккуратным на равенстве вещественных чисел

→ Ссылка
Автор решения: Ramiz

чем то это напоминает такую экзотическую конструкцию:

someSpecialLoop: {
  for(int i = 0; i < 10; i++) {
     // код цикла
     if(/* условие "неуспешного" выполнения */)
       break someSpecialLoop;
  }

  // код после успешного выполнения цикла
} 
→ Ссылка
Автор решения: insolor

Как вариант - вынести цикл в метод, вместо break в цикле использовать return.

Например, было:

for i in range(10):
    if condition:
        break
else:
    on_success()

other_code()

Стало:

def test():
    for i in range(10):
        if condition:
            return
    
    on_success()


test()
other_code()

Можно вместо break бросать исключение:

try {
    for(int i; i < 10; i++) {
        if (condition) {
            throw new SomeException();
        }
    }
    onSuccess();
} catch (SomeException ex) {
    // 
}
→ Ссылка