Цикл do-while

Открыта

Квест Java Syntax Pro еще в разработке

Сейчас мы вычитываем лекции и работаем над задачами. Если заметили ошибки — пишите в комментариях: всё учтем перед релизом. Спасибо!


1. Обратный цикл

В Java есть еще одна разновидность цикла while — цикл do-while. Он очень похож на while и тоже состоит всего из двух частей: «условие» и «тело цикла». Тело цикла выполняется снова и снова, пока условие равно true. Общий вид цикла do-while такой:

do
   команда;
while (условие)

или

do
{
   блок команд
}
while (условие)

Но если в цикле while последовательность выполнения будет такой: условие, тело цикла, условие, тело цикла, условие, тело цикла, ...

То в do-while она будет немного другой: тело цикла, условие, тело цикла, условие, тело цикла, ...

Фактически разница между while и do while только в том, что тело цикла в цикле do-while выполнятся как минимум один раз.


2. Выгоды от использования цикла do-while

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

Цикл do-while обычно используют именно тогда, когда нет смысла проверять условие, если тело цикла не выполнилось. Например, в теле цикла проходят какие-нибудь вычисления, и их результаты используются в условии.

Пример:

Программа вводит строки с клавиатуры, пока не введено слово exit

while do while
String s;
while (true)
{
   s = console.nextLine();
   if (s.equals("exit"))
      break;
}
String s;
do
{
   s = console.nextLine();
}
while (!s.equals("exit"))

операторы break и continue в цикле do-while работают точно так же, как в цикле while.


3. Сравнение циклов do-while: Java vs Pascal

В Паскале опять-таки есть аналог цикла do-while, только называется он repeat-until. Однако он немного отличается от цикла do-while. В цикле repeat-until в условии нужно указывать условие не для продолжения цикла, а для выхода из него.

Примеры:

Pascal Java
Repeat
   ReadLn(s);
Until s = 'exit';
String s;
do {
   s = console.nextLine();
}
while ( !s.equals("exit") )

Что-то тут Pascal прямо красавчик по сравнению с Java. Нужно завязывать с примерами из Паскаля, а то засмеют.


Комментарии (5)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Денис Ferondo
13 уровень, Yalta
7 ноября 2020, 20:34
почему все примеры со scaner, а решаем с BufferedReader ?))
Gennady D
7 уровень, Москва
15 июня 2020, 12:32
Нужно сравнивать с Python и тогда засмеют Java )))
Marina
24 уровень, Ростов-на-Дону
11 мая 2020, 12:04
В примере тело цикла-одна команда, поэтому можно скобки не ставить и цикл будет выглядеть компактней почти как в Паскале
Vitalii
11 уровень
22 марта 2020, 12:16
Фактически разница между while и do while только в том, что тело цикла в цикле do-while выполнятся как минимум один раз. "как минимум" прячем в запятые, и дальше по тексту то же самое
Максим
17 уровень, Санкт-Петербург
24 января 2020, 12:58
супер